我可以在剧本中嵌入库存吗?

问题描述 投票:0回答:1

我想为 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关键字似乎只接受字符串列表

ansible
1个回答
1
投票

您无法在剧本中“嵌入”库存,但您可以使用

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   

© www.soinside.com 2019 - 2024. All rights reserved.