可以使用 ansible 变量在剧本中声明主机吗?

Can ansible variables be used to declare hosts in a playbook?

我有以下格式的剧本:

---
- hosts: myIP
  tasks:
  - name: Install a yum package in Ansible example
    yum:
      name: ThePackageIWantToInstall
      state: present

其中 myIPThePackageIWantToInstall 是变量。

当作业模板运行时,我希望 extra variables 弹出窗口中的用户能够使用:

myIP = 192.168.1.1
ThePackageIWantToInstall = nano

由于文档没有提供通过作业模板提供变量的示例,这可能吗?

是的。

- name: Do The Thing
  hosts: "{{ foo }}"
  roles:
   - "{{ role }}"

需要小胡子和名言。


从弹出

到 运行

(我不使用这个,但有人建议将其作为编辑,谢谢...)

foo: 值

我用 add_hosts 实现了类似的事情。这里我不是安装包,而是使用从命令行传递的名称创建文件。任意数量的主机(可以从命令行传递以逗号分隔)。

# cat addhost2.yml
- hosts: localhost
  gather_facts: no
  tasks:
    - add_host:
        name: "{{ item }}"
        groups: hosts_from_commandline
      with_items: "{{ new_hosts_passed.split(',') }}"


- hosts: hosts_from_commandline
  tasks:
    - name: Ansible create file with name passed from commandline
      file:
        path: "/tmp/{{ filename_from_commandline }}"
        state: touch
# ansible-playbook -i hosts addhost2.yml --extra-vars='new_hosts_passed=192.168.3.104,192.168.3.113 filename_from_commandline=lathamdkv'

希望对您有所帮助