您使用什么策略来控制自定义设置?使用ini文件或以yaml格式保存文件?!
例如,我有关于我的机构的首字母缩略词的设置。
如何从我的Playbook访问这些变量或自定义数据?
我想有条件地阅读设置。基于引用的首字母缩略词。
就像那样:
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看库存子集。
答案 0 :(得分:1)
我认为这对你有用。如果你可以从你正在使用的剧本中发布更多内容,我可以帮助你完成这项工作,以适应你正在运行的实际任务。
这是我使用的命令行语法:
ansible-playbook -i hosts playbook.yml --extra-vars "ACRONYM=SIN"
---
- 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