ansible-vault를 사용한 비밀번호 관리
8923 단어 passwordansiblemanagementsecrets
요즘 ansible-vault 사용에 대한 학습에서 벗어난 또 다른 게시물이 있습니다.
한동안 KodeKloud 성능 기반 작업을 수행해 왔으며 그 작업 중 하나는 ansible 플레이북을 사용하여 사용자 및 그룹을 생성하는 작업이었습니다. 사용자의 비밀번호는 ansible-vault를 사용하여 관리해야 합니다.
이전에 ansible-vault를 사용해 본 적이 없기 때문에 확실히 재미있는 학습입니다.
일
다음 작업을 수행하기 위해 ansible 플레이북을 생성합니다.
# cat /home/centos/users.yml
admins:
- rob
- tim
developers:
- mark
- john
해결책
작업을 완료하려면 작업을 마지막부터 처음까지 살펴보고 완료해야 합니다.
참고: ansible-vault의 암호는 안전한 위치에 보관해야 합니다. 연습용으로 보여드립니다.
[centos@localhost vault]$ pwd
/home/centos/vault
[centos@localhost vault]$ cat password.txt
redhat
[centos@localhost vault]$ grep vault_password_file /etc/ansible/ansible.cfg
vault_password_file = /home/centos/vault/password.txt
이를 위해 ansible-vault 명령을 사용하여 문자열을 암호화합니다. 또한 관리자 사용자 비밀번호의 암호화된 문자열 이름을 "admin_pwd"라는 변수에 지정하고 개발자 사용자 비밀번호의 경우 "developer_pwd"라는 변수에 이름을 지정합니다.
참고: 여기에서 확인해야 할 중요한 사항은 변수 이름에 하이픈 "-"이 포함되지 않아야 한다는 것입니다. 그렇지 않으면 암호가 사용자에게 작동하지 않습니다. 이것은 작업을 시도하는 동안 내 경험에서 나온 것입니다.
[centos@localhost ~]$ ansible-vault encrypt_string 'adminpassword' --name 'admin_pwd'
admin_pwd: !vault |
$ANSIBLE_VAULT;1.1;AES256
30323636346564376638376364386335646463626662646535633863663265383563383238363236
3863623764366533313162346335653736323438656331370a373263643733623766373264613530
37333537663761383232313564343131663438303966386336663733633332343030633866613737
3139373661623137650a303936363562383335613437653365323737373430363831633164366334
3336
Encryption successful
[centos@localhost ~]$ ansible-vault encrypt_string 'developerpassword' --name 'developer_pwd'
developer_pwd: !vault |
$ANSIBLE_VAULT;1.1;AES256
61656230636461653861356530346230386461646436636533366665346264366666623264383130
3539343339626664383731363665306238386434306435620a653139353735366330336466346635
39623832663063373738306238343433396661373566653232383236613662343437313832326562
3166616232663137380a343133353439396261323939323365313339663464393266373437303335
36323633306333386435616639653730396266616334643536643936623465383131
Encryption successful
[centos@localhost var]$ pwd
/var
[centos@localhost var]$ ls -ld www
drwxrwxrwx. 2 root root 27 Jul 2 17:53 www
디렉토리에 대한 권한을 관찰하십시오www. 설정되어 있지 않으면 아래 명령을 사용하여 권한을 업데이트하십시오.
[centos@localhost var]$ sudo chmod 777 www
[centos@localhost ~]$ cat playbook.yml
---
- hosts: localhost
vars_files: /home/centos/users.yml
vars:
admin_pwd: !vault |
$ANSIBLE_VAULT;1.1;AES256
30323636346564376638376364386335646463626662646535633863663265383563383238363236
3863623764366533313162346335653736323438656331370a373263643733623766373264613530
37333537663761383232313564343131663438303966386336663733633332343030633866613737
3139373661623137650a303936363562383335613437653365323737373430363831633164366334
3336
developer_pwd: !vault |
$ANSIBLE_VAULT;1.1;AES256
61656230636461653861356530346230386461646436636533366665346264366666623264383130
3539343339626664383731363665306238386434306435620a653139353735366330336466346635
39623832663063373738306238343433396661373566653232383236613662343437313832326562
3166616232663137380a343133353439396261323939323365313339663464393266373437303335
36323633306333386435616639653730396266616334643536643936623465383131
tasks:
- name: create group
group:
name: "{{ item }}"
state: present
loop:
- admins
- developers
- name: create admins users
user:
name: "{{ item }}"
create_home: yes
groups: admins, wheel
append: yes
password: "{{ admin_pwd | string | password_hash('sha512') }}"
loop: "{{ admins }}"
- name: create developers users
user:
name: "{{ item }}"
create_home: yes
home: /var/www
groups: developers
append: yes
password: "{{ developer_pwd | string | password_hash('sha512') }}"
loop: "{{ developers }}"
- vars_files is pointing to the file users.yml which contains the groups and users information.
- vars is pointing to the variables which were created using the ansible-vault command
- tasks list consists of the task first to create the groups given in the users.yml, then create the users using group and user modules of the ansible respectively.
- create_home=yes -> home directory is supposed to be created in the /home
- users in the admins group are also supposed to be sudo user, this is why groups: admins, wheels & append: yes have been added into the task. Similarly for users in the developers group, groups: developers
- password for users in the admins and developers should be set to admin_pwd and developer_pwd variables created during encrypt string step. Password strings are also required to be hashed so as not to expose during the playbook execution or otherwise.
- both user creation tasks consists of loop where values under the admins and developers list (array) are being used from users.yml
[centos@localhost ~]$ ansible-playbook playbook.yml
PLAY [localhost] *************************************************************************************************************
TASK [Gathering Facts] *******************************************************************************************************
ok: [localhost]
TASK [create group] **********************************************************************************************************
ok: [localhost] => (item=admins)
ok: [localhost] => (item=developers)
TASK [create admins users] ***************************************************************************************************
changed: [localhost] => (item=rob)
changed: [localhost] => (item=tim)
TASK [create developers users] ***********************************************************************************************
changed: [localhost] => (item=mark)
changed: [localhost] => (item=john)
PLAY RECAP *******************************************************************************************************************
localhost : ok=4 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[centos@localhost ~]$
참고: 플레이북 실행의 자세한 출력을 보려면 ansible-playbook 명령과 함께 "-vv"옵션을 사용하십시오.
# ansible-playbook playbook.yml -vv
참조
Reference
이 문제에 관하여(ansible-vault를 사용한 비밀번호 관리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/prabhatsingh014/password-management-using-ansible-vault-2dbi텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)