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