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

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

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

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

我读了一些关于 local_action 的内容,但我想我没有理解正确。

这是用于网络服务器的......但我如何获取它并在本地创建一些文件?


- hosts: webservers
      remote_user: someuser
- name: create some file
    template: src=~/workspace/ansible_templates/somefile_template.j2 dest=/etc/somefile/apps-available/someproject.ini
ansible
3个回答
57
投票

您可以使用参数

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 委托

对于本地主机,您还需要确保库存中的本地连接:

[local]
localhost   ansible_connection=local

26
投票

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

看起来更干净。


8
投票

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

connection: local
表示不要对 playbook 使用 SSH,如下所示:https://docs.ansible.com/ansible/latest/user_guide/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"
© www.soinside.com 2019 - 2024. All rights reserved.