Инструменты пользователя

Инструменты сайта


ansible:over

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
ansible:over [2023/12/04 12:53]
admin [OverAll]
ansible:over [2024/11/20 09:51] (текущий)
admin
Строка 157: Строка 157:
 Ключ для запроса в cmd: --ask-vault-pass Ключ для запроса в cmd: --ask-vault-pass
 Ключ для указания в  cmd: --vault-password-file Ключ для указания в  cmd: --vault-password-file
 +
 +
 +# ask password
 +--ask-vault-password, --ask-vault-pass
 +
 +# создать, сохранится зашифрованный
 +ansible-vault create new_file
 +
 +# расшифровать
 +ansible-vault decrypt file.txt --output file.txt_open
 +
 +# открыть для редактирования, при закрытии снова зашифруется
 +ansible-vault edit 
 +
 +ansible-vault view
 </code> </code>
 +
 +
 +<details>
 +<summary>:!: Пример расшифровки в консоли</summary>
 +
 +<code bash>
 +export chiphertext='$ANSIBLE_VAULT;1.1;AES256
 + 63363161346637313765383762356535366637653435313436623435666166326338346163303232
 + 6432313962643561306631303363613334303664666536350a653561613564343236313766646336
 + 66336363396339353734643732343833333135336662613038326435633831613935326434633865
 + 6631626366386234620a386332633965613436386337613138353762623566623461353034653832
 + 62306266396439656533636430643261376331616436656334376430386264656532'
 +
 +printf "%s\n" $chiphertext | ansible-vault decrypt
 +</code>
 +</details>
 +
 +
  
  
Строка 548: Строка 581:
 Stop-Process -Id $(cat myScript.pid) Stop-Process -Id $(cat myScript.pid)
 ./myScript.ps1 ./myScript.ps1
 +</code>
  
 +
 +Переменная с результатом содержит примерно такой вывод, при условии что консоль продолжила работать\\
 +(и started и finished == 1)\\
 +Если консоль сразу же корректно завершилась то вывод не отличается, тобишь здесь можно отследить проблему именно при физическом запуске доп процесса, типа если pShell не сможет его запустить, а вот если приложение упадет после запуска, это уже надо другими способами проверять, хотя бы ПИД как минимум\\
 +<code bash>
 +ok: [host_mes_mds_prod] => {
 +    "msg": {
 +        "ansible_async_watchdog_pid": 1516,
 +        "ansible_job_id": "41177545019.4340",
 +        "changed": true,
 +        "cmd": "cd C:\\test_mds\\\n./startMDS2.ps1",
 +        "delta": "0:00:00.437520",
 +        "end": "2023-12-04 12:59:59.234763",
 +        "failed": false,
 +        "failed_when_result": false,
 +        "finished": 1,
 +        "rc": 0,
 +        "results_file": "C:\\Users\\ansible\\.ansible_async\\41177545019.4340",
 +        "start": "2023-12-04 12:59:58.797243",
 +        "started": 1,
 +        "stderr": "",
 +        "stderr_lines": [],
 +        "stdout": "",
 +        "stdout_lines": []
 +    }
 +}
 </code> </code>
 </details> </details>
  
  
 +
 +<details>
 +<summary> :!: Динамические группы инвентори</summary>
 +Смысл в том что можно в рантайме сформировать группу хостов, на основе каких то данных в нем, например факты или хостовые переменные\\
 +
 +Динамические группы формируются на все попадаемые значения, указанной переменной, содержатся только в памяти и к сожалению похоже нельзя вывести весь список, что усложняет работу с ними\\
 +
 +Так же использовать можно только в текущем плейбуке, "не отходя от кассы" что называется\\
 +Например:
 +<code yaml>
 +# Выполняем на всех хостах, группируем по знаяениям в хостовой переменной
 +- hosts: all
 +  gather_facts: no
 +  tasks:
 +    - name: Set 'appgrp_mgaimports'
 +      group_by:
 +        key: "{{ variable_in_host }}"
 +
 +# Далее запускаем плейбуки с определенными параметрами только для нужной группы
 +- hosts: value_1
 +  gather_facts: false
 +  roles:
 +    - my_role_for_1
 +
 +- hosts: value_2
 +  gather_facts: false
 +  roles:
 +    - my_role_for_2
 +
 +</code>
 +</details>
 +
 +
 +
 +=== Command & shell ===
 +**command** - работает чуть быстрее но запускается не через оболочку ("bin/sh"), поэтому в нем не доступны переменные окружения и прочие плюшки шелла, типа конвейеров, перенаправления вывода и проч\\
 +
 +
 +
 +
 +
 +<details>
 +<summary>:!: Результат команды в переменную</summary>
 +<code yaml>
 +- name: "Получаем имя из конфига"
 +  ansible.builtin.shell: "yq '.profile' {{ workdir }}{{ profile_config }}"
 +  register: try_name
 +
 +- name: "msg"
 +  debug:
 +    msg: "{{ try_name }}"
 +</code>
 +
 +
 +<code bash>
 +ok: [localhost] => {
 +    "msg": {
 +        "changed": true,
 +        "cmd": "yq '.profile' /home/path/my-file.yml",
 +        "delta": "0:00:00.121520",
 +        "end": "2024-11-20 12:35:49.242621",
 +        "failed": false,
 +        "failed_when_result": false,
 +        "rc": 0,
 +        "start": "2024-11-20 12:35:49.121101",
 +        "stderr": "",
 +        "stderr_lines": [],
 +        "stdout": "my-super-name",
 +        "stdout_lines": [
 +            "my-super-name"
 +        ]
 +    }
 +}
 +</code>
 +</details>
 +
 +
 +
 +<details>
 +<summary> :!: </summary>
 +<code yaml>
 +</code>
 +</details>
  
ansible/over.1701694385.txt.gz · Последнее изменение: 2023/12/04 12:53 — admin