ansible become 方法 - 主机之间的变化
ansible become method - change between hosts
假设我有一本剧本:
---
- name
host: testserver
become_method = sudo
become_user = root
tasks:
- name: copystuff
module: copy
do stuff
- name: copy stuff
delegate_to: localhost
module: copy
do stuff
我在本地主机和测试服务器上有相同的用户和相同的密码。但是在测试服务器上,我必须使用 sudo 才能成为 root,但在本地主机上,我必须使用 dzdo 才能成为 root。
所以我想知道是否有办法让我使用其中任何一种,如果一种方法不起作用?
是的,这就是 hostvars
的设计目的:为每个主机声明 vars
。
如果您有库存文件(或在大多数动态库存源中),您可以在库存文件中执行此操作,如精美手册中所示。或者,如果您 运行 是一个更临时的清单列表(例如 -i machine1,localhost,machine99
),那么您可以使用条件 set_fact:
在 ansible 启动后声明该 hostvar 运行 :
- set_fact:
ansible_become_method: dzdo
when: inventory_hostname == "localhost"
只要您在使用具有 become: yes
的任务之前执行此操作
您可能也对 pre_tasks:
关键字感兴趣
假设我有一本剧本:
---
- name
host: testserver
become_method = sudo
become_user = root
tasks:
- name: copystuff
module: copy
do stuff
- name: copy stuff
delegate_to: localhost
module: copy
do stuff
我在本地主机和测试服务器上有相同的用户和相同的密码。但是在测试服务器上,我必须使用 sudo 才能成为 root,但在本地主机上,我必须使用 dzdo 才能成为 root。
所以我想知道是否有办法让我使用其中任何一种,如果一种方法不起作用?
是的,这就是 hostvars
的设计目的:为每个主机声明 vars
。
如果您有库存文件(或在大多数动态库存源中),您可以在库存文件中执行此操作,如精美手册中所示。或者,如果您 运行 是一个更临时的清单列表(例如 -i machine1,localhost,machine99
),那么您可以使用条件 set_fact:
在 ansible 启动后声明该 hostvar 运行 :
- set_fact:
ansible_become_method: dzdo
when: inventory_hostname == "localhost"
只要您在使用具有 become: yes
的任务之前执行此操作
您可能也对 pre_tasks:
关键字感兴趣