簡體   English   中英

使用Ansible將多個用戶添加到linux系統

[英]Adding multiple users to a linux system with Ansible

我已經構建了一套可愛的Ansible劇本,打包程序可以使用它們來為AWS中的軟件構建構建我們的Linux映像。 他們是如此的好,以至於現在其他許多團隊也希望使用它們。

當前設置是一本劇本,需要扮演許多角色。 其中一些角色進行系統級配置,另一些角色創建由var jenkins_user定義的用戶並為其設置各種程序(conan,npm,jfrog)

由於我的角色已經設置為可以作用於單個變量,因此對其進行修改以作用於一系列用戶名應該不難。 我正在嘗試確定定義多個用戶的最佳方法。

對於每個用戶,我需要少量的var:

  • 用戶名
  • 密碼
  • 私鑰
  • 授權密鑰文件

我正在嘗試確定存儲所有這些內容的最佳方法。 我的第一個想法是用戶和數據的哈希:

build_users:
  user1:
    password: "{{vault_user1_pass}}"
    private_key_file:  "{{vault_user1_key}}"
    auth_keys_file:  "{{auth_keys_file}}"

  user2:
    password: "{{vault_user2_pass}}"
    private_key_file:  "{{vault_user2_key}}"
    auth_keys_file:  "{{user2_auth_keys_file}}"

這會讓我保護用戶數據,這不一定是一件壞事。

我想到的第二件事就是在每個用戶的各自文件中都有一個目錄:user1.yml contains

user1:
  password: "{{vault_user1_pass}}"
  private_key_file:  "{{vault_user1_key}}"
  auth_keys_file:  "{{auth_keys_file}}"

然后user2.yml包含

user2:
  password: "{{vault_user2_pass}}"
  private_key_file:  "{{vault_user2_key}}"
  auth_keys_file:  "{{user2_auth_keys_file}}"

但是,似乎如果我嘗試將其他文件添加到buildusers變量,則include_vars會覆蓋它而不是添加:

- name: load buildusers files
  include_vars:
    dir: buildusers
    name: buildusers

這將導致buildusers變量中僅包含最后一個文件數據。

include_vars將使用位於buildusers文件夾的所有文件中的變量值覆蓋buildusers變量的內容。

如果要合並在中央文件(劇本或變量文件)中定義的變量與在文件夾中文件列表中定義的值,則必須手動combine這兩個變量。

- name: Combine variables
  hosts: localhost
  connection: local
  gather_facts: no
  vars:
    buildusers_default:
      user3:
        password: "pass"
        private_key_file:  "priv"
        auth_keys_file:  "auth"

  tasks:
   - name: load buildusers files
     include_vars:
      dir: buildusers
      name: buildusers_files
   - name: combine variables
     set_fact:
       buildusers: "{{ buildusers_default | combine(buildusers_files) }}"
   - name: debug
     debug: 
      var: buildusers

# ok: [127.0.0.1] => 
#   buildusers:
#     user1:
#       auth_keys_file: auth
#       password: pass
#       private_key_file: priv
#     user2:
#       auth_keys_file: auth
#       password: pass
#       private_key_file: priv
#     user3:
#       auth_keys_file: auth
#       password: pass
#       private_key_file: priv

文件夾buildusers的內容。

$ tree buildusers 
buildusers
├── user1.yml
└── user2.yml

希望能幫助到你。

注意

您還可以通過在加載過程中注冊一個變量並通過變量ansible_included_var_files檢查其值來檢查文件中的變量加載過程。

  tasks:
   - name: load buildusers files
     include_vars:
      dir: buildusers
      name: buildusers_files
     register: check_load
   - name: debug
     debug:
       var: check_load.ansible_included_var_files

#  check_load.ansible_included_var_files:
#  - /home/romain/ansible/user1.yml
#  - /home/romain/ansible/user2.yml

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM