微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

创建一个Ansible角色,该角色将使用元文件中的模式添加/删除用户 在具有以下内容的角色文件文件夹中创建users.confMeta文件创建一个主要的剧本并使用上面的角色执行主要剧本具有主机清单

如何解决创建一个Ansible角色,该角色将使用元文件中的模式添加/删除用户 在具有以下内容的角色文件文件夹中创建users.confMeta文件创建一个主要的剧本并使用上面的角色执行主要剧本具有主机清单

ashwani:present:super yashvinder:present:normal rajat:absent:super

注意:

  1. 存在/不存在是用户的状态,是否可以在系统上使用。
  2. super表示用户将能够使用sudo特权
  3. 普通用户将无法使用sudo特权

解决方法

提供文件

shell> cat users.conf 
ashwani:present:super yashvinder:present:normal rajat:absent:super

首先解析数据。例如

    - set_fact:
        my_users: "{{ my_users|default([]) +
                      [{'user': params.0,'state': params.1,'super': (params.2 == 'super')}] }}"
      loop: "{{ lookup('file','users.conf').split(' ') }}"
      vars:
        params: "{{ item.split(':') }}"
    - debug:
        var: my_users

给予

    "my_users": [
        {
            "state": "present","super": true,"user": "ashwani"
        },{
            "state": "present","super": false,"user": "yashvinder"
        },{
            "state": "absent","user": "rajat"
        }
    ]

然后使用模块user创建用户。例如

    - user:
        name: "{{ item.user }}"
        state: "{{ item.state }}"
      loop: "{{ my_users }}"

使用lineinfile启用sudo。例如

    - lineinfile:
        path: /etc/sudoers
        line: "{{ item.user }} ALL=(ALL) NOPASSWD: ALL"
      loop: "{{ my_users }}"
      when: item.super

(未测试)

,

创建Ansible角色

$ ansible-galaxy init usermanagement
在角色任务文件中创建任务
$ vi usermanagement/tasks/main.yml
添加以下内容
---
# tasks file for createusers
- name: Create User
  user:
    name: "{{item.split(':').0}}"
    state: "{{item.split(':').1}}"
  loop: "{{ lookup('file','users.conf').splitlines() }}"
- name: Setup Sudo Access for Ansible User
  copy:
    dest: "/etc/sudoers.d/{{item.split(':').0}}"
    content: "{{item.split(':').0}} ALL=(ALL) NOPASSWD: ALL"
    validate: /usr/sbin/visudo -cf %s
  loop: "{{ lookup('file','users.conf').splitlines() }}"
  when: item.split(':').2 == "super" and item.split(':').1 == "present"

在具有以下内容的角色文件文件夹中创建users.conf(Meta)文件

ashwani:present:super
yashvinder:present:normal
rajat:absent:super
$ vi usermanagement/files/users.conf

创建一个主要的剧本并使用上面的角色。

$ vi main.yml
- hosts: all
  become: true
  roles:
  - usersmanagement

执行主要剧本(具有主机清单)

$ ansible-playbook main.yml

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。