Ansible: различия между версиями
Нет описания правки |
Нет описания правки Метка: ручная отмена |
||
(не показано 17 промежуточных версий 9 участников) | |||
Строка 12: | Строка 12: | ||
apt-get install ansible | apt-get install ansible | ||
2. Прописываем управляемые компьютеры в группу (local). В файл {{path|/etc/ansible/hosts}} требуется добавить: | 2. Прописываем управляемые компьютеры в группу (local). В файл {{path|/etc/ansible/hosts}} требуется добавить (а в новых версиях Ansible желательно указать пользователя, под которым будет запущены команды на управляемых узлах (root)): | ||
<source lang="ini">[all:vars] | |||
ansible_user=root | |||
[local] | |||
10.10.3.77</source> | |||
3. Так как управление будет осуществляться через ssh по ключам, создаём ключ SSH: | 3. Так как управление будет осуществляться через ssh по ключам, создаём ключ SSH: | ||
Строка 23: | Строка 26: | ||
eval `ssh-agent` | eval `ssh-agent` | ||
ssh-add ~/.ssh/manager | ssh-add ~/.ssh/manager | ||
5. Создадим каталог для пакетов рецептов (playbooks): | |||
mkdir -p /etc/ansible/playbooks | |||
= Подготовка клиента = | = Подготовка клиента = | ||
1. Устанавливаем необходимые модули: | 1. Устанавливаем необходимые модули: | ||
apt-get install python-module-yaml python-module-jinja2 | apt-get install python python-module-yaml python-module-jinja2 python-modules-json python-modules-distutils | ||
2. Включаем и запускаем службу sshd: | 2. Включаем и запускаем службу sshd: | ||
для SystemV: | |||
chkconfig sshd on | chkconfig sshd on | ||
service sshd start | service sshd start | ||
для SystemD: | |||
systemctl enable sshd.service | |||
systemctl start sshd.service | |||
3. Размещаем публичную часть созданного на сервере ключа пользователю root (в модуле [[alterator-root|Администратор]] или вручную добавить содержимое файла '''manager.pub''' в {{path|/etc/openssh/authorized_keys/root}}. | 3. Размещаем публичную часть созданного на сервере ключа пользователю root (в модуле [[alterator-root|Администратор]] или вручную добавить содержимое файла '''manager.pub''' в {{path|/etc/openssh/authorized_keys/root}}. | ||
Строка 38: | Строка 49: | ||
ssh root@10.10.3.77 | ssh root@10.10.3.77 | ||
= Проверка доступности = | |||
Используем модуль «ping»: | |||
<source lang="json" highlight="1"># ansible -m ping local | |||
10.10.3.77 | SUCCESS => { | |||
"changed": false, | |||
"failed": false, | |||
"ping": "pong" | |||
}</source> | |||
= Полезные рецепты = | |||
Рецепты применяются командой: | |||
ansible-playbook <имя файла> | |||
== Прописывание репозитория == | |||
Файл: {{path|/etc/ansible/playbooks/repo.yml}} | |||
<source lang="yaml">- hosts: local | |||
remote_user: root | |||
tasks: | |||
- name: Remove all repositories | |||
shell: apt-repo rm all | |||
- name: Add official mirror | |||
shell: apt-repo add http://10.10.3.77/repo/p8 | |||
- name: Add official mirror with arepo | |||
shell: apt-repo add 'rpm http://10.10.3.77/repo/p8 x86_64-i586 classic' | |||
- name: Add extra repository | |||
shell: apt-repo add 'rpm http://10.10.3.77/repo/extra x86_64 extra'</source> | |||
{{Note|Используется [http://docs.ansible.com/ansible/latest/modules/shell_module.html модуль shell] и программа {{cmd|apt-repo}}.}} | |||
== Установка пакета == | |||
Файл: {{path|/etc/ansible/playbooks/install-ifcplugin.yml}} | |||
<source lang="yaml">- hosts: local | |||
remote_user: root | |||
tasks: | |||
- name: Update cache and install ifcplugin | |||
apt_rpm: | |||
name: ifcplugin | |||
state: present | |||
update_cache: yes</source> | |||
== Обновление системы == | |||
С версии ansible-2.9.27-alt2 и ansible-core-2.14.2-alt1: | |||
<source lang="yaml">- hosts: local | |||
remote_user: root | |||
gather_facts: no | |||
tasks: | |||
- name: Update cache | |||
apt_rpm: | |||
update_cache: true | |||
- name: Upgrade system | |||
apt_rpm: | |||
dist_upgrade: true | |||
- name: Upgrade kernel | |||
apt_rpm: | |||
update_kernel: true | |||
- name: Clean package cache | |||
apt_rpm: | |||
clean: true</source> | |||
Или всё в одном: | |||
<source lang="yaml">- hosts: local | |||
remote_user: root | |||
gather_facts: no | |||
tasks: | |||
- name: Upgrade system | |||
apt_rpm: | |||
update_cache: true | |||
dist_upgrade: true | |||
update_kernel: true | |||
clean: true</source> | |||
{{Note|Используется [https://docs.ansible.com/ansible/latest/collections/community/general/apt_rpm_module.html модуль apt_rpm].}} | |||
= Ссылки = | |||
* [http://habr.com/ru/post/508762/ Основы Ansible, без которых ваши плейбуки — комок слипшихся макарон] | |||
[[Категория:Управление конфигурациями]] | [[Категория:Управление конфигурациями]] | ||
{{Category navigation|title=Управление конфигурациями|category=Управление конфигурациями|sortkey={{SUBPAGENAME}}}} |
Текущая версия от 08:12, 21 августа 2023
Об Ansible
Ansible — система управления конфигурациями, написанная на Python, с использованием декларативного языка разметки для описания конфигураций. Используется для автоматизации настройки и развертывания программного обеспечения. Обычно используется для управления Linux-узлами, но Windows также поддерживается. Поддерживает работу с сетевыми устройствами, на которых установлен Python версии 2.4 и выше по SSH или WinRM соединению.
- Веб-сайт: https://www.ansible.com
- Пакет в Sisyphus: https://packages.altlinux.org/ru/Sisyphus/srpms/ansible
- Связанные пакеты: alterator-mass-management
Подготовка сервера
1. Устанавливаем ansible:
apt-get install ansible
2. Прописываем управляемые компьютеры в группу (local). В файл /etc/ansible/hosts требуется добавить (а в новых версиях Ansible желательно указать пользователя, под которым будет запущены команды на управляемых узлах (root)):
[all:vars]
ansible_user=root
[local]
10.10.3.77
3. Так как управление будет осуществляться через ssh по ключам, создаём ключ SSH:
ssh-keygen -t ed25519 -f ~/.ssh/manager
Пароль ключа можно оставить пустым.
4. Добавить ключ на сервере:
eval `ssh-agent` ssh-add ~/.ssh/manager
5. Создадим каталог для пакетов рецептов (playbooks):
mkdir -p /etc/ansible/playbooks
Подготовка клиента
1. Устанавливаем необходимые модули:
apt-get install python python-module-yaml python-module-jinja2 python-modules-json python-modules-distutils
2. Включаем и запускаем службу sshd:
для SystemV:
chkconfig sshd on service sshd start
для SystemD:
systemctl enable sshd.service systemctl start sshd.service
3. Размещаем публичную часть созданного на сервере ключа пользователю root (в модуле Администратор или вручную добавить содержимое файла manager.pub в /etc/openssh/authorized_keys/root.
4. Проверим доступ по ключу с сервера:
ssh root@10.10.3.77
Проверка доступности
Используем модуль «ping»:
# ansible -m ping local
10.10.3.77 | SUCCESS => {
"changed": false,
"failed": false,
"ping": "pong"
}
Полезные рецепты
Рецепты применяются командой:
ansible-playbook <имя файла>
Прописывание репозитория
Файл: /etc/ansible/playbooks/repo.yml
- hosts: local
remote_user: root
tasks:
- name: Remove all repositories
shell: apt-repo rm all
- name: Add official mirror
shell: apt-repo add http://10.10.3.77/repo/p8
- name: Add official mirror with arepo
shell: apt-repo add 'rpm http://10.10.3.77/repo/p8 x86_64-i586 classic'
- name: Add extra repository
shell: apt-repo add 'rpm http://10.10.3.77/repo/extra x86_64 extra'
Установка пакета
Файл: /etc/ansible/playbooks/install-ifcplugin.yml
- hosts: local
remote_user: root
tasks:
- name: Update cache and install ifcplugin
apt_rpm:
name: ifcplugin
state: present
update_cache: yes
Обновление системы
С версии ansible-2.9.27-alt2 и ansible-core-2.14.2-alt1:
- hosts: local
remote_user: root
gather_facts: no
tasks:
- name: Update cache
apt_rpm:
update_cache: true
- name: Upgrade system
apt_rpm:
dist_upgrade: true
- name: Upgrade kernel
apt_rpm:
update_kernel: true
- name: Clean package cache
apt_rpm:
clean: true
Или всё в одном:
- hosts: local
remote_user: root
gather_facts: no
tasks:
- name: Upgrade system
apt_rpm:
update_cache: true
dist_upgrade: true
update_kernel: true
clean: true