linux - ansible become 方法 - 在主机之间更改
问题描述
假设我有一本剧本:
---
- 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
我在本地主机和测试服务器上都有相同的用户和相同的密码。但是在 testserver 上,我必须使用 sudo 才能成为 root,但在 localhost 上,我必须使用 dzdo 才能成为 root。
所以我想知道是否有一种方法可以让我使用任何一种方法,如果一种方法不起作用?
解决方案
是的,这就是hostvars
设计的目的:vars
按主机声明。
如果您有库存文件(或在大多数动态库存来源中),您可以在库存文件中执行此操作,如精美手册中所示。或者,如果您正在使用更临时的清单列表(例如-i machine1,localhost,machine99
)运行,那么您可以在 ansible 开始运行后使用条件set_fact:
来声明 hostvar:
- set_fact:
ansible_become_method: dzdo
when: inventory_hostname == "localhost"
只要您在使用具有become: yes
它的任务之前这样做
您也可能对pre_tasks:
关键字感兴趣
推荐阅读
- r - 根据前一行中的值计算单元格中的值的快速方法
- reactjs - react-select:是否可以同时添加动画组件和自定义组件?
- azure-cli - Azure CLI | 列出资源
- java - 将数据传递给 Javafx 中的另一个控制器
- pine-script - Pinescript TradingView Renko 仅在砖块收于 SMMA 上方/下方时发出警报
- python - 如何子类化 pandas-dataframe 以具有某些列名?
- jsf - 我的自定义 ExceptionHandler 不适用于 Ajax 请求
- haskell - 在haskell语言的谓词中绑定let的问题?
- c++ - 概念中的嵌套类型绑定在 GCC 和 clang 上失败,但在 msvc 上失败
- php - Phpspreadsheet excel解析抛出500内部服务器错误