首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据缩写词读取和操作设置

如何根据缩写词读取和操作设置
EN

Stack Overflow用户
提问于 2016-01-13 06:41:11
回答 1查看 89关注 0票数 1

您使用什么策略来控制自定义设置?使用ini文件还是以yaml格式保存文件?!

例如,我对我的机构的缩写进行了设置。

如何从我的行动手册访问这些变量或自定义数据?

我想有条件地读取设置。基于引用的首字母缩写。

就像这样:

代码语言:javascript
复制
ansible-playbook -i hosts myplaybooy.yml my_acronym

示例结构,其中CAX、BAC和SIN是首字母缩写:

代码语言:javascript
复制
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中,像这样的条件测试是不起作用的。

代码语言:javascript
复制
- 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查看库存子集的事实。

EN

回答 1

Stack Overflow用户

发布于 2016-01-13 11:34:27

我想这对你会有用的。如果你可以从你正在使用的攻略中发布更多,我可以帮助你使这项工作适用于你正在运行的实际任务。

这是我使用的命令行语法:

ansible-playbook -i hosts playbook.yml --extra-vars "ACRONYM=SIN"

playbook.yml:

代码语言:javascript
复制
---
- 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:

代码语言:javascript
复制
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
  }
 }

这是我的终端输出:

代码语言:javascript
复制
    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   
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34755147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档