我正在尝试在多个节点上的tomcat
server.xml
中自动命名节点号。
我有下面的剧本:
vars:
- node_number: "{{ ansible_host_all.index(inventory_hostname) + 1 }}"
- name: Nommage des nodes
block:
- name: Change interpreter
set_fact:
ansible_python_interpreter: "/usr/bin/python3"
- name: Nommage des nodes
become: yes
become_method: sudo
become_user: "{{env}}adm"
community.general.xml:
path: /data/{{env}}/web/tomcat/conf/server.xml
xpath: /Server/Service/Engine
attribute: jvmroute
value: "node0{{node_number}}"
backup: true
when:
- ansible_facts['distribution'] == 'Rocky'
问题是我有四个节点(BDD、APP1、APP2、APP3)。 在这个剧本中,节点号以 BDD=node01 开头,然后 APP1=node02 ...等等
我想要做的是将 BDD 服务器从该任务中排除,以从 APP1=node02 开始节点号,然后 APP2=node02 ...等
你能帮我吗?
在这里和那里形成您当前的描述,至少对我来说,完全不清楚如何构建清单,如何组织主机和组变量,以及服务器和节点名称。因此,建议再次查看链接的文档并/或提供更多信息。
对于库存文件
example.com
,内容为
[stack:children]
db
app
[db]
node01.example.com
[app]
node0[2:4].example.com
命令
ansible-inventory --inventory example.com --graph
将产生
的输出@all:
|--@stack:
| |--@app:
| | |--node02.example.com
| | |--node03.example.com
| | |--node04.example.com
| |--@db:
| | |--node01.example.com
|--@ungrouped:
和一个命令
ansible-inventory app --inventory example.com --graph
进入
@app:
|--node02.example.com
|--node03.example.com
|--node04.example.com
因此,需要一个最小示例剧本
---
- hosts: app
become: false
gather_facts: false
tasks:
- debug:
msg: "{{ inventory_hostname_short }}"
通过
调用ansible-playbook --inventory example.com main.yml
将产生
的输出TASK [debug] **************
ok: [node02.example.com] =>
msg: node02
ok: [node03.example.com] =>
msg: node03
ok: [node04.example.com] =>
msg: node04