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

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


ansible:playbooks

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
ansible:playbooks [2023/12/12 03:58]
admin
ansible:playbooks [2024/11/21 11:01] (текущий)
admin
Строка 1: Строка 1:
 ====== Разные примеры ====== ====== Разные примеры ======
 +
 +<details>
 +<summary>:!: Inventory</summary>
 +hosts.yml
 +<code yaml>
 +all:
 +  children:
 +    app_myApp:
 +      hosts:
 +        host_myApp_master:
 +          ansible_host: 10.10.40.204
 +
 +</code>
 +
 +hosts/myApp
 +<code yaml>
 +---
 +myApp_path: "/tank/secure/test_myApp/"
 +myApp_appname: "test_myApp.jar"
 +
 +</code>
 +
 +
 +group/all.yml
 +<code yaml>
 +#ansible_connection: winrm
 +#ansible_port: 5985
 +#ansible_winrm_transport: basic
 +#ansible_winrm_server_cert_validation: ignore
 +
 +ansible_connection: ssh
 +ansible_ssh_port: 22
 +
 +ansible_user: ansible
 +ansible_password: !vault |
 +  $ANSIBLE_VAULT;1.1;AES256
 +  31323664336536.......
 +
 +nexus_base_url: 'https://mysite.ru/repository'
 +nexus_username: jenkins
 +nexus_password: !vault |
 +  $ANSIBLE_VAULT;1.1;AES256
 +  3534534534......
 +
 +</code>
 +</details>
 +
  
  
Строка 171: Строка 218:
 - block: - block:
     - name: "Разворачиваем бекап"     - name: "Разворачиваем бекап"
-      win_shell: "Expand-Archive -Force -LiteralPath {{ myapp_path }}'backups\\prev_version.zip' -DestinationPath {{ mds_path }}"+      win_shell: "Expand-Archive -Force -LiteralPath {{ myapp_path }}'backups\\prev_version.zip' -DestinationPath {{ myapp_path }}"
  
     - name: "Перезапускаем приложения"     - name: "Перезапускаем приложения"
Строка 224: Строка 271:
 - name: "Копируем на целевой хост" - name: "Копируем на целевой хост"
   copy:   copy:
-    src: '{{ mds_appname }}' +    src: '{{ myapp_name }}' 
-    dest: '{{ "%s/%s" | format(mds_pathmds_appname) }}'+    dest: '{{ "%s/%s" | format(myapp_pathmyapp_name) }}'
  
 </code> </code>
Строка 278: Строка 325:
  
 - name: "Проверяем запущен ли процесс" - name: "Проверяем запущен ли процесс"
-  win_shell: "Get-Process -Id $(cat {{ myapp_path }}mes_mds.pid) -ErrorAction SilentlyContinue | Format-Table -Property ProcessName"+  win_shell: "Get-Process -Id $(cat {{ myapp_path }}myapp.pid) -ErrorAction SilentlyContinue | Format-Table -Property ProcessName"
   register: check_pid   register: check_pid
   failed_when: check_pid.rc < 0   failed_when: check_pid.rc < 0
Строка 295: Строка 342:
 (Start-Process java -ArgumentList "-Xmx4096m -Dapplication.env=PROD -jar {{ myapp_name }}" -passthru).ID > myApp.pid (Start-Process java -ArgumentList "-Xmx4096m -Dapplication.env=PROD -jar {{ myapp_name }}" -passthru).ID > myApp.pid
  
 +</code>
 +</details>
 +
 +
 +
 +<details>
 +<summary> :!: Работа с переменными в плейбуке</summary>
 +
 +Проверка существования\\
 +Встречал вариант "**when: item is not defined**", но он очевидно не работает, проверка спокойно проходит\\
 +Хотя "is not defined" довольно распространено, оно похоже в цикле не применимо, она проверяет существование "item" а не то что в нее передаем, точно\\
 +А вариант с "in vars" работает даже с экстра переменными\\
 +<code yaml>
 +---
 +- name: "10-check_vars | Проверка переменных"
 +  ansible.builtin.fail:
 +    msg: "{{ item }} is not defined"
 +  when: item not in vars
 +  loop:
 +    - my_var1
 +    - my_var2
 +    - my_var3
 +</code>
 +
 +Развертывание словаря в шаблоне джинджи\\
 +В инвентори например такой словарь, точнее это список словарей\\
 +<code yaml>
 +my_dict_dests:
 +  - name: "dest_1"
 +    destDir: "/mytank/DEST/dest_1"
 +    transferType: "sftp"
 +    host: "10.10.10.40"
 +    user: "---"
 +    pass: "---"
 +
 +  - name: "dest_2"
 +    destDir: "/mytank/DEST/dest_2"
 +</code>
 +
 +Перечисляем все имеющиеся параметры в файле шаблона j2\\
 +т.к. фактически это список словарей, поэтому нужен вложенный цикл\\
 +<code yaml>
 +{% for dest in my_dict_dests%}
 +[[DestDir]]
 +{% for item in dest.items() %}
 +    {{ item[0] }} = "{{ item[1] }}"
 +{% endfor %}
 +{% endfor %}
 +</code>
 +
 +
 +<code yaml>
 </code> </code>
  
Строка 300: Строка 399:
  
  
 +
 +<details>
 +<summary>:!: Плагины поиска </summary>
 +[[https://docs.ansible.com/ansible/latest/plugins/lookup.html]]\\
 +[[https://github.com/morphje/ansible_pass_lookup/blob/master/README.md]]\\
 +
 +Python скрипт нужно поместить в папку "lookup_plugins" в папку с ролью\\
 +<code yaml>
 +- debug:
 +    msg: "{{ lookup('pass', 'example/test create=true length=42')}}"
 +
 +- debug:
 +    msg: "{{ lookup('custom_var', 'my_variable')}}"
 +</code>
 +</details>
  
  
  
 <details> <details>
-<summary> :!:  </summary>+<summary>:!: Поиск и перебор файлов в ОС </summary> 
 +[[https://www.dmosk.ru/miniinstruktions.php?mini=ansible-examples#files]] 
 <code yaml> <code yaml>
 +- name: "find files"
 +  find:
 +    path: "/my-folder/"
 +    file_type: file
 +    patterns: "*.yml,*.yaml"
 +    recurse: true
 +  register: list_files
  
 +- name: "show list"
 +  debug:
 +    msg: "file: {{ item }}"
 +  loop: "{{ list_files.files | map(attribute='path') | list }}"
 </code> </code>
 </details> </details>
 +
  
  
  
 <details> <details>
-<summary> :!:  </summary>+<summary>:!:  </summary>
 <code yaml> <code yaml>
  
 </code> </code>
 </details> </details>
ansible/playbooks.1702353529.txt.gz · Последнее изменение: 2023/12/12 03:58 — admin