Ansible在运行之前启动ssh-copy-id?

时间:2017-07-12 10:11:13

标签: ansible

我想使用Ansible在某些远程服务器中禁用selinux。我还不知道服务器的完整列表,它会不时出现。

如果将local_action阶段以某种方式集成到剧本中,那将是很好的 - 你会期望从自动化系统中获得这个阶段吗?我不介意每台服务器要求输入一次密码。

通过各种阅读,我了解我可以在任务中运行--- - name: Disable SELinux hosts: all remote_user: root gather_facts: False tasks: - local_action: command ssh-copy-id {{remote_user}}@{{hostname}} - selinux: state: disabled

{{remote_user}}

然而:

  • 失败,因为在此上下文中无法访问{{hostname}}gather_facts
  • 我需要Falselocal_action,因为它在ionic cordova plugin add cordova-sqlite-storage
  • 之前执行

有任何想法是否可以在Ansible剧本中使用?

1 个答案:

答案 0 :(得分:2)

你可以试试这个:

- hosts: all
  gather_facts: no
  tasks:
    - set_fact:
        rem_user: "{{ ansible_user | default(lookup('env','USER')) }}"
        rem_host: "{{ ansible_host }}"
    - local_action: command ssh-copy-id {{ rem_user }}@{{ rem_host }}
    - setup:
    - selinux:
        state: disabled

首先定义远程用户和远程主机,然后进行本地操作,然后使用setup强制收集事实。