如何通过Ansible shell运行apt更新和升级

如何通过Ansible shell运行apt更新和升级,ansible,ansible-playbook,Ansible,Ansible Playbook,我尝试使用Ansible运行以下两个命令: sudo-apt-get-update&&sudo-apt-get-upgrade-y 我知道使用ansible,您可以使用: ansible all-mshell-u user-K-a“正常运行时间” 运行下面的命令可以吗?或者我必须使用某种raw命令吗 ansible all-mshell-u user-K-a“sudo-apt-get-update&&sudo-apt-get-upgrade-y”我不建议为此使用shell,因为ansible的a

我尝试使用Ansible运行以下两个命令:

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

我知道使用ansible,您可以使用:

ansible all-mshell-u user-K-a“正常运行时间”

运行下面的命令可以吗?或者我必须使用某种
raw
命令吗


ansible all-mshell-u user-K-a“sudo-apt-get-update&&sudo-apt-get-upgrade-y”

我不建议为此使用shell,因为ansible的apt模块正是为此而设计的。我已经在下面详细介绍了如何使用apt

在剧本中,您可以像这样进行更新和升级:

- name: Update and upgrade apt packages
  become: true
  apt:
    upgrade: yes
    update_cache: yes
    cache_valid_time: 86400 #One day
cache\u valid\u time
值可以忽略。其目的是:

如果apt缓存早于缓存有效时间,则更新该缓存。这 选项以秒为单位设置

因此,如果您不想在缓存最近才更新时更新缓存,那么最好将其包括在内

要作为特别命令执行此操作,可以运行:

$ansible all-m apt-a“升级=是更新\u缓存=是缓存\u有效\u时间=86400”-成为
详细描述了特别命令


请注意,我使用的是
--been
been:true
。这是通过Ansible进行典型权限升级的示例。您使用
-u user
-K
(请求权限提升密码)。使用任何适合您的格式,这只是为了向您展示最常见的格式。

使用Ubuntu 16.04,我做了一些调整:

- name: Update and upgrade apt packages
  become: true
  apt:
    update_cache: yes
    upgrade: 'yes'
我只是将升级
yes
放在撇号之间,以避免出现不令人讨厌的警告:

[WARNING]: The value True (type bool) in a string field was converted to u'True' (type string). If this does
not look like what you expect, quote the entire value to ensure it does not change.
我只想对原始答案发表评论,但没有得到允许,目前

参考:

只是想在答案上添加一点味道。这是清单文件中指定的所有主机中的可执行剧本

- hosts: all
  become: yes
  tasks:
  - name: Update and upgrade apt packages
    apt:
      upgrade: yes
      update_cache: yes
      cache_valid_time: 86400 

你试过了吗?与内置的
apt
模块相比,您为什么更喜欢此模块?我是ansible的新手,只是想了解一下,我会优先选择apt模块,但不确定它是否也会升级?谢谢。如果在公司代理之后使用
environment:http\u proxy:“http://{{proxy\u user}}:{{vault\u proxy\u password}}}}}{{proxy\u host}}:{{{proxy\u port}”https\u proxy:“http://{proxy\u user}:{vault\u proxy\u password}}}}}}{{proxy\u host}}:{{proxy\u port}}无代理:{
这与OP的问题有什么关系?它看起来更像是基于另一个答案的切线答案。另外,警告和错误不一样。你读过我写的吗?我只想对最初的答案发表评论,但没有得到允许。谢谢,我把“错误”改为“警告”。