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

时间:2015-07-13 12:39:20

标签: 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

3 个答案:

答案 0 :(得分:27)

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

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

请参阅文档中的Playbook Delegation

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

[local]
localhost

然后在你的剧本中:

hosts: local

答案 1 :(得分:13)

Ansible有local_action指令支持这些方案,避免了localhost和/或ansible_connection解决方法,Delegation文档中对此进行了介绍。

修改原始示例以使用local_action

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

看起来更干净。

答案 2 :(得分:1)

如果您无法执行/允许localhost SSH,则可以将Playbook拆分为本地操作和远程操作。

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"