我想为 ansible playbook 构建一些最小的示例,因此我不想为每个 playbook 拥有多个文件和目录。
我想让单个文件包含所有内容。
我知道我可以像下面一样使用 localhost,然后我就可以在没有库存的情况下运行剧本。
- name: Example playbook
hosts: localhost
connections: local
tasks:
- ansible.builtin.debug: "hello!"
我想知道如何做类似的事情,同时在剧本中定义一个简单的库存:
all:
hosts:
localhost:
ansible_connection: local
host1:
http_port: 80
maxRequestsPerChild: 808
ansible_host: 127.0.0.2
剧本中的hosts关键字似乎只接受字符串列表
add_host
模块动态构建库存。
例如:
- hosts: localhost
gather_facts: false
tasks:
- add_host:
name: newhost1
groups:
- webservers
http_port: 80
maxRequestsPerChild: 808
ansible_host: 127.0.0.2
- hosts: webservers
gather_facts: false
tasks:
- ping:
运行此命令会产生:
PLAY [localhost] ***************************************************************
TASK [add_host] ****************************************************************
changed: [localhost]
PLAY [webservers] **************************************************************
TASK [ping] ********************************************************************
ok: [newhost1]
PLAY RECAP *********************************************************************
localhost : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
newhost1 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0