如何在开发计算机上使用ansible模板在本地创建文件

Jur*_*ocs 18 ansible ansible-playbook

我开始使用ansible,我正在寻找一种方法来在服务器上创建一个样板项目,并在本地环境中使用ansible playbooks.

我想在本地使用ansible模板来创建一些通用文件.但是我如何采取ansible在本地执行某些事情?

我用local_action读了一些东西,但我想我没弄错.

这是针对webbserver ...但是如何在本地创建一些文件呢?


- hosts: webservers
      remote_user: someuser
- name: create some file
    template: src=~/workspace/ansible_templates/somefile_template.j2 dest=/etc/somefile/apps-available/someproject.ini
Run Code Online (Sandbox Code Playgroud)

udo*_*dan 32

您可以使用param将任务委派delegate_to给您喜欢的任何主机,例如:

- name: create some file
  template: src=~/workspace/ansible_templates/somefile_template.j2 dest=/etc/somefile/apps-available/someproject.ini
  delegate_to: localhost
Run Code Online (Sandbox Code Playgroud)

请参阅文档中的Playbook Delegation.

如果您的Playbook通常应该在本地运行,但不涉及外部主机,您只需创建一个包含localhost然后针对该组运行该剧本的组.在您的库存中:

[local]
localhost
Run Code Online (Sandbox Code Playgroud)

然后在你的剧本中:

hosts: local
Run Code Online (Sandbox Code Playgroud)

  • 似乎.我认为他们改变了这一点,你不必强制本地连接.也许你有一个较老的Ansible?无论如何,你可以将它添加到你的库存:`localhost ansible_connection = local` - 或者如果整个playbook应该在本地运行你可以像这里描述的那样:https://docs.ansible.com/playbooks_delegation.html#local-playbooks (5认同)

小智 15

Ansible有一个local_action指令来支持这些避免localhost和/或ansible_connection变通方法的场景,并在代表团文档中有所涉及.

要修改要使用的原始示例local_action:

- name: create some file
    local_action: template src=~/workspace/ansible_templates/somefile_template.j2 dest=/etc/somefile/apps-available/someproject.ini
Run Code Online (Sandbox Code Playgroud)

看起来更干净.

  • fwiw,“local_action:”只是“delegate_to: localhost”的更短语法 (3认同)

ala*_*jds 7

如果您不能执行/允许 localhost SSH,您可以拆分本地操作和远程操作的剧本。

connection: local说,不使用SSH的剧本,如下所示:http://docs.ansible.com/ansible/playbooks_delegation.html#local-playbooks

例子:

# myplaybook.yml

- hosts: remote_machines
  tasks:
  - debug: msg="do stuff in the remote machines"

- hosts: 127.0.0.1
  connection: local
  tasks:
  - debug: msg="ran in local ansible machine"

- hosts: remote_machines
  tasks:
  - debug: msg="do more stuff in remote machines"
Run Code Online (Sandbox Code Playgroud)