New Reply
Name
×
Email
Subject
Message
Files Max 5 files10MB total
Tegaki
Password
[New Reply]


ansible — система управления конфигурациями, написанная на языке программирования Python, с использованием декларативного языка разметки для описания конфигураций.

документация:
* https://docs.ansible.com/ansible/latest/index.html
* https://redhat-cop.github.io/automation-good-practices
* https://docs.ansible.com/ansible/2.8/user_guide/playbooks_best_practices.html

полезное:
* https://github.com/sandervanvugt/rhce8-book
* https://github.com/geerlingguy/ansible-for-devops

курсы/видосы:
* Ansible: From Basics to Guru by Sander van Vugt
* Red Hat RHCE 8 (EX294)

книги:
* Sander van Vugt - Red Hat RHCE 8 (EX294)
* https://www.jeffgeerling.com/ansible-2022
Есть такая контора southbridge. И они недавно запустили бесплатные курсы по ansible. Пошел смотреть и сначала было интересно, потом смешно, а потом уже не смешно.

Например, они говорят:

так делать плохо:
- name: Rpmcheck exclusions file templated
  template:
    src: "{{ base_sb_srv_dir }}/etc/{{ base_fix_rpm_file }}.j2"
    dest: "/{{ base_sb_srv_dir }}/etc/{{ base_fix_rpm_file }}"
    owner: root
    group: root
    mode: "0644"

так хорошо:
- name: Rpmcheck exclusions file templated
  template:
    src: "srv/southbridge/etc/fix-rpm.local.conf.j2"
    dest: "/srv/southbridge/etc/fix-rpm.local.conf"
    owner: root
    group: root
    mode: "0644"

Оцените масштаб аргументации: **Лишние "усы" ({{ }}) ухудшают читаемость кода и вынуждают в процессе чтения "прыгать" по
разным файлам.**

ссылка на это произведение: https://galaxy.southbridge.io/docs/ansible/guidelines/-/blob/master/no_extra_vars.adoc

То что код нужно сокращать и неповторяться - пофигу. Давайте наговнякаем чтобы более-менее читалось. И пофигу на долгое и сложное внесение изменений в такое.


Еще рассказывали, что не пользуются molecule, так как в подавляющем большинстве случаев она нужна для запуска линтера. А в докер контейнере они используют venv для установки ансибля. Дальше слушать не смог.
Открыл для себя циклические зависимости в ансибле! Можно смело уходить на выходные.

В общем, если сделать так:

node:
  unit:
    name: node-01
    service: "{{ node.unit.name }}.service"
    path: /etc/systemd/system/
    full: "{{ node.unit.path }}/{{ node.unit.service }}"
  drop-in:
    name: 10-drop-in.conf
    path: "{{ node.unit.path }}/{{ node.unit.name }}.d"
    full: "{{ node.drop-in.path }}/{{ node.drop-in.name }}"

мы получим: 

Error was a <class 'ansible.errors.AnsibleError'>, original message: recursive loop detected in template string: {{ victoria_single_node.unit.name }}.service. maximum
recursion depth exceeded while calling a Python object

В итоге, пришлось разбивать на два словаря. Не так красиво как изначально, но хотя бы работает.
Вообще все чаще думаю о переходе с ansible на nix/guix. Пора в футуре шагнуть обеими ногами.
как оказалось такой вариант править  непросто

node:
  unit:
    name: node-01
    service: "{{ node.unit.name }}.service"
    path: /etc/systemd/system/
    full: "{{ node.unit.path }}/{{ node.unit.service }}"
  drop-in:
    name: 10-drop-in.conf
    path: "{{ node.unit.path }}/{{ node.unit.name }}.d"
    full: "{{ node.drop-in.path }}/{{ node.drop-in.name }}"

похоже реально в ямле  нужно по минимуму использовать переменные
[New Reply]
Connecting...
Show Post Actions

Actions:

Captcha:

- feedback - news - rules - faq -
jschan 1.4.1