您使用什么策略来控制自定义设置?使用ini文件还是以yaml格式保存文件?!
例如,我对我的机构的缩写进行了设置。
如何从我的行动手册访问这些变量或自定义数据?
我想有条件地读取设置。基于引用的首字母缩写。
就像这样:
ansible-playbook -i hosts myplaybooy.yml my_acronym示例结构,其中CAX、BAC和SIN是首字母缩写:
CAX
IP_SERVER = 200.253.167.1
IP_DB_MASTER = 200.253.167.20
IP_DB_SLAVE = 200.253.167.21
IP_MIRROR = 200.253.167.13
BAC
IP_SERVER = 200.253.168.1
IP_DB_MASTER = 200.253.168.20
IP_DB_SLAVE = 200.253.168.21
IP_MIRROR = 200.253.168.13
SIN
IP_SERVER = 200.253.169.1
IP_DB_MASTER = 200.253.169.20
IP_DB_SLAVE = 200.253.169.21
IP_MIRROR = 200.253.169.13这一改变的原因是为了让我的剧本适应ansible-pull。在ansible-pull中,像这样的条件测试是不起作用的。
- name: Download pub key acesso
fetch:
src=~acesso/.ssh/id_rsa.pub
dest="{{role_path}}/../appserver/files/pub_keys/appservers/csa{{groupvar.server.acronym}}am/acesso.pub" flat=yes
sudo: yes
delegate_to: "{{hostvars['csa'+groupvar.server.acronym+'am'].ansible_ssh_host}}"
when: inventory_hostname in groups['pdv'+groupvar.server.acronym]
run_once: True
ignore_errors: yes我认为这是由于ansible-pull查看库存子集的事实。
发布于 2016-01-13 11:34:27
我想这对你会有用的。如果你可以从你正在使用的攻略中发布更多,我可以帮助你使这项工作适用于你正在运行的实际任务。
这是我使用的命令行语法:
ansible-playbook -i hosts playbook.yml --extra-vars "ACRONYM=SIN"
playbook.yml:
---
- name: show vars
hosts: localhost
vars_files:
- var_file.yml
tasks:
- debug:
msg: IP_SERVER = {{Acronyms[ACRONYM].IP_SERVER}}
- debug:
msg: IP_DB_MASTER = {{Acronyms[ACRONYM].IP_DB_MASTER}}
- debug:
msg: IP_DB_SLAVE = {{Acronyms[ACRONYM].IP_DB_SLAVE}}
- debug:
msg: IP_MIRROR = {{Acronyms[ACRONYM].IP_MIRROR}}var_file.yml:
Acronyms: {
CAX:
{ IP_SERVER: 200.253.167.1,
IP_DB_MASTER: 200.253.167.20,
IP_DB_SLAVE: 200.253.167.21,
IP_MIRROR: 200.253.167.13
},
BAC:
{ IP_SERVER: 200.253.168.1,
IP_DB_MASTER: 200.253.168.20,
IP_DB_SLAVE: 200.253.168.21,
IP_MIRROR: 200.253.168.13
},
SIN:
{ IP_SERVER: 200.253.169.1,
IP_DB_MASTER: 200.253.169.20,
IP_DB_SLAVE: 200.253.169.21,
IP_MIRROR: 200.253.169.13
}
}这是我的终端输出:
PLAY [show vars] ***************************************************************
TASK [setup] *******************************************************************
ok: [localhost]
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": "IP_SERVER = 200.253.169.1"
}
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": "IP_DB_MASTER = 200.253.169.20"
}
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": "IP_DB_SLAVE = 200.253.169.21"
}
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": "IP_MIRROR = 200.253.169.13"
}
PLAY RECAP *********************************************************************
localhost : ok=5 changed=0 unreachable=0 failed=0 https://stackoverflow.com/questions/34755147
复制相似问题