2017-01-08 27 views
14

我试图用Ansible运行以下两个命令:如何运行apt更新,并通过Ansible外壳升级

sudo apt-get update && sudo apt-get upgrade -y

我知道有ansible你可以使用:

ansible all -m shell -u user -K -a "uptime"

会运行下面的命令吗?或者我必须使用raw命令

ansible all -m shell -u user -K -a "sudo apt-get update && sudo apt-get upgrade -y"

+0

你试过了吗?你为什么喜欢这个与内置的'apt'模块? – tedder42

+0

我是刚刚尝试理解的新手,我会对apt模块做出承诺,但不确定是否也升级了? – nadermx

回答

29

的某种我不推荐使用壳牌这一点,因为Ansible有专为刚刚为此,容易模块。我已经详细使用下面的apt。

在一个剧本,你可以更新和升级,像这样:可以省略

- name: Update and upgrade apt packages 
    become: true 
    apt: 
    upgrade: yes 
    update_cache: yes 
    cache_valid_time: 86400 #One day 

cache_valid_time值。它的用途从docs

更新apt cache(如果它早于cache_valid_time)。此 选项在几秒钟内设置。

因此,如果您不想在最近才更新缓存时更新缓存,则很有必要。

要做到这一点,你可以运行一个特设的命令:

$ ansible all -m apt -a "upgrade=yes update_cache=yes cache_valid_time=86400" --become

临时命令详细here

请注意,我用的--becomebecome: true描述。这是通过Ansible典型的特权升级的例子。您使用-u user-K(请求特权升级密码)。使用哪个适合你,这只是为了向你展示最常见的形式。