Рубрики
ansible

ansible / ansible-vault / хранение секретов / шифрованный файл / шифрованные строки

вводное

ansible-vault create mysecret.txt - создание специального зашифрованного файла для хранения секретов (AES256) (редактор vim)
ansible-vault view mysecret.txt - посмотреть зашифрованный файл (просто cat) 
ansible-vault edit mysecret.txt - редактировать зашифрованный файл (редактор vim)

ansible-vault encrypt playbook_vault.yml - шифруем файл playbook_vault.yml (AES256)
ansible-vault decrypt playbook_vault.yml - расшифровываем файл playbook_vault.yml

ansible-playbook playbook_vault.yml --ask-vault-pass - запуск зашифрованного playbook, ansible попросит ввести пароль
ansible-playbook  playbook_vault.yml --vault-password-file mypass.txt - запуск зашифрованного playbook, ansible будет искать пароль в mypass.txt (пароль просто записан текстом)

playbook_vault.yml — будем шифровать этот файл

---
- name: vault playbook
  hosts: all
  become: yes

  vars:
    admin_pass: Pass123

  tasks:
  - name: Install package tree
    yum: name=tree state=present

  - name: Create Config File
    copy:
      dest: "/home/secret/myconfig.conf"
      content: |
         port = 9092
         log = 7days
         home =  /home/secret/
         user = admin
         password = {{ admin_pass }}
...

Шифрование строк в ansible

ansible-vault encrypt_string - шифрование строки

ansible-vault encrypt_string --stdin-name "Mypassword" - шифрование строки
New Vault password: у нас спрашивают для пароль для расшифровки, ввел 1
Confirm New Vault password: вводим пароль для расшифровки еще раз 1
Reading plaintext input from stdin. (ctrl-d to end input) нажимаем Ctrl+d
Pass123 - это мы шифруем
Mypassword: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          39633633373832373034633265323832353636363733643431636535346535643532643439386435
          6638306639306430363664633036386332313133373231390a386338373232373765353964373634
          35363336353962646137663631366265336362323431393263356436313935373735366465363936
          3265633730376163390a376564336565316330393261373931356339656164366162633839666463
          6337
Encryption successful


Нас интересует вот это
 !vault |
          $ANSIBLE_VAULT;1.1;AES256
          39633633373832373034633265323832353636363733643431636535346535643532643439386435
          6638306639306430363664633036386332313133373231390a386338373232373765353964373634
          35363336353962646137663631366265336362323431393263356436313935373735366465363936
          3265633730376163390a376564336565316330393261373931356339656164366162633839666463
          6337




echo -n "$%^SecretWord&&^%" | ansible-vault encrypt_string - еще один вариант шифровать строку
New Vault password:
Confirm New Vault password:
Reading plaintext input from stdin. (ctrl-d to end input)
!vault |
          $ANSIBLE_VAULT;1.1;AES256
          37343432306532653463666138393336396366303664613332373337323730623034663639336530
          3561333338623638343532396130636461356638643931640a303436613561343634363965373863
          62663935313362363535663064316635643636613535386438366239623265633633663066396237
          6430396435323739370a343964613933633964353937336437346536656364313738323130613836
          35613038326338633439623063396264303961313639376466363332323362623866
Encryption successful

Шифрование строки в plabook.yml

---
- name: vault playbook
  hosts: all
  become: yes

  vars:
    admin_pass: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          39633633373832373034633265323832353636363733643431636535346535643532643439386435
          6638306639306430363664633036386332313133373231390a386338373232373765353964373634
          35363336353962646137663631366265336362323431393263356436313935373735366465363936
          3265633730376163390a376564336565316330393261373931356339656164366162633839666463
          6337

  tasks:
  - name: Install package tree
    yum: name=tree state=present

  - name: Create Config File
    copy:
      dest: "/home/secret/myconfig.conf"
      content: |
         port = 9092
         log = 7days
         home =  /home/secret/
         user = admin
         password = {{ admin_pass }}
...


ansible-playbook  playbook_vault.yml --ask-vault-pass - запуск playbook с зашифрованной строкой