【问题标题】:Ansible playbook that runs a script and fetch the outpot back to the playbook运行脚本并将输出返回到 playbook 的 Ansible playbook
【发布时间】:2021-06-16 00:48:11
【问题描述】:

我正在尝试运行一个将创建用户并将其添加到 /etc/sudoers 的剧本, 所以我写了这个东西

    - hosts: "{{ hostname }}"
  vars_prompt:
    - name: user
      prompt: "Enter user"
      private: no
    - name: password
      prompt: "Enter password"

  tasks:
    - name: Create the new user
      user:
        name: "{{ user }}"
        state: present
        #state: absent
        password: "{{ password  | password_hash('sha512', 'password') }}"
        groups: SSHusers


    - name: Add line in /etc/sudoers
      lineinfile:
        dest: /etc/sudoers
        line: "User_Alias LINUX_ADMINS = Example, {{ user }}"
        regexp: "^User_Alias LINUX_ADMINS."
        state: present
        #state: absent
       

    - name: Run chage for user
      command: chage -d 9999999999 "{{ user }}"
    - name: Run chage for user
      command: chage -M -1 "{{ user }}"

问题是我替换了- name: Add line in /etc/sudoers 中的行 我每次添加新用户时都必须更改它。

我需要在主机 Admin_Users=$(grep -w 'LINUX_ADMINS =' /etc/sudoers) 上运行类似的东西并将 var 带回来,以便我的剧本能够使用它, 有什么建议我应该怎么做? 感谢您的帮助

【问题讨论】:

  • 将两个任务 create user + add to sudoer 定义为 a roleinclude 以干燥您的代码。

标签: ansible


【解决方案1】:

你必须重组你的剧本。

  • 您仍然为每个用​​户运行“用户”任务。
  • 但您不是为单个用户运行“lineinfile”任务,而是为所有用户一起运行。

如果您将所有用户传递给“lineinfile”,则该任务可以一次制作整行。因此,为每个用户逐步更改线路的问题就消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2021-09-13
    • 1970-01-01
    相关资源
    最近更新 更多