如何 运行 通过 Ansible shell 进行 apt 更新和升级
How to run apt update and upgrade via Ansible shell
我正在尝试使用 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"
我不建议为此使用 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_valid_time
值可以省略。其目的来自 docs:
Update the apt cache if its older than the cache_valid_time. This
option is set in seconds.
因此,如果您不想在最近才更新缓存时更新缓存,那么最好包括在内。
要将此作为临时命令执行,您可以 运行:
$ ansible all -m apt -a "upgrade=yes update_cache=yes cache_valid_time=86400" --become
详细描述了临时命令here
请注意,我使用的是 --become
和 become: true
。这是通过 Ansible 进行典型权限升级的示例。您使用 -u user
和 -K
(要求提权密码)。使用适合您的方式,这只是向您展示最常见的形式。
使用Ubuntu16.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: true
tasks:
- name: Update and upgrade apt packages
apt:
upgrade: yes
update_cache: yes
cache_valid_time: 86400
我们使用以下命令来更新和升级所有包:
ansible all -m apt -a "name='*' state=latest update_cache=yes upgrade=yes" -b --become-user root
我正在尝试使用 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"
我不建议为此使用 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_valid_time
值可以省略。其目的来自 docs:
Update the apt cache if its older than the cache_valid_time. This option is set in seconds.
因此,如果您不想在最近才更新缓存时更新缓存,那么最好包括在内。
要将此作为临时命令执行,您可以 运行:
$ ansible all -m apt -a "upgrade=yes update_cache=yes cache_valid_time=86400" --become
详细描述了临时命令here
请注意,我使用的是 --become
和 become: true
。这是通过 Ansible 进行典型权限升级的示例。您使用 -u user
和 -K
(要求提权密码)。使用适合您的方式,这只是向您展示最常见的形式。
使用Ubuntu16.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: true
tasks:
- name: Update and upgrade apt packages
apt:
upgrade: yes
update_cache: yes
cache_valid_time: 86400
我们使用以下命令来更新和升级所有包:
ansible all -m apt -a "name='*' state=latest update_cache=yes upgrade=yes" -b --become-user root