[英]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.