我在Ansible中有一个用于多路复用的主机文件
[masters]
master ansible_host=10.10.1.1 ansible_ssh_user=root ansible_ssh_pass=froyo
[workers]
worker1 ansible_host=10.10.1.2 ansible_ssh_user=root ansible_ssh_pass=froyo
worker2 ansible_host=10.10.1.3 ansible_ssh_user=root ansible_ssh_pass=froyo
我想要一个shell命令来设置节点名称
- hosts: workers
become: yes
tasks:
- name: join cluster
shell: "{{ hostvars['master'].join_command }} --node-name {{self.name}} >> node_joined.txt"
args:
chdir: $HOME
creates: node_joined.txt
How to get the host name of the current machine as defined in the Ansible hosts file?中的Q / A被识别为包含 inventory_hostname
,但是这对我不起作用..我可以改变 Worker 的主机名,这是我想要避免的 .
从上面的播放中我希望通过 hosts
文件中存在的名称 worker1
和 worker2
在主服务器中识别两个节点 .
我无法设置任何内容: inventory_hostname
或其他包括 ansible_hostname
和 ansible_nodename
. 有没有办法从主机访问名称 worker1
和 worker2
?它似乎没有设置 ansible -i hosts worker1 -m setup
的变量...请帮我识别我错过的东西,在此先感谢
1 回答
您需要将playbook限制为worker1
尝试:
ansible-playbook -i hosts --limit worker1 -m setup