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

如何在开发机器上使用ansible模板本地创建文件,ansible,ansible-playbook,Ansible,Ansible Playbook,我从ansible开始,我正在寻找一种方法,用ansible剧本在服务器和本地环境上创建样板项目 我想在本地使用ansible模板来创建一些通用文件。 但是我如何使用ansible在本地执行某些操作呢 我读了一些关于地方行动的东西,但我想我没有弄好 这是为Web服务器准备的…但是我如何在本地创建一些文件呢 您可以使用paramdelegate_将任务委派给您喜欢的任何主机,例如: - name: create some file template: src=~/workspace/ansi

我从ansible开始,我正在寻找一种方法,用ansible剧本在服务器和本地环境上创建样板项目

我想在本地使用ansible模板来创建一些通用文件。 但是我如何使用ansible在本地执行某些操作呢

我读了一些关于地方行动的东西,但我想我没有弄好

这是为Web服务器准备的…但是我如何在本地创建一些文件呢



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

- name: create some file
  template: src=~/workspace/ansible_templates/somefile_template.j2 dest=/etc/somefile/apps-available/someproject.ini
  delegate_to: localhost
请参阅文档中的

如果您的playbook通常在本地运行,但不涉及任何外部主机,那么您只需创建一个包含
localhost
的组,然后针对该组运行playbook。在您的库存中:

[local]
localhost   ansible_connection=local
然后在你的剧本中:

hosts: local

Ansible有一个
local\u action
指令来支持这些场景,它避免了
localhost
和/或
Ansible\u连接
的解决方法,并在文档中介绍

要修改原始示例以使用
本地\u操作

- name: create some file
    local_action: template src=~/workspace/ansible_templates/somefile_template.j2 dest=/etc/somefile/apps-available/someproject.ini

这看起来更干净。

如果您不能执行/允许本地主机SSH,您可以在本地操作和远程操作上拆分剧本

连接:local
表示不要将SSH用于剧本,如下所示:

例如:

# 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"

Thanks很多…但是ansible是否尝试ssh到我的本地主机?获取SSH错误:SSH:连接到主机本地主机端口22:连接被拒绝这是必要的吗?看起来像。我认为他们改变了这一点,你不必强迫本地连接。也许你有一个更老的Ansible?无论如何,您可以将其添加到您的清单中:
localhost ansible\u connection=local
——或者如果整个剧本都应该在本地运行,您可以像这里所描述的那样添加到剧本中:这个解决方案应该被认为是正确的。其他两个方案在本地工作,但仍然需要ssh。这没有任何意义。fwiw,
local\u action:
只是
delegate\u to:localhost
# 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"