Управление конфигурацией
Цель управления конфигурацией — поддерживать системы в желаемом состоянии. Он направлен на устранение дрейфа конфигурации как можно больше. Дрифт конфигурации происходит при изменении и обновлениях конфигурации AD-HOC и обновления в результате несоответствующей среды разработки, тестирования и развертывания. Это может привести к вопросам развертывания, уязвимости безопасности и рисков при разработке приложений и услуг, которые необходимы для удовлетворения строгих стандартов соответствия нормативным требованиям. Управление конфигурацией позволяет масштабировать инфраструктуру, не беспокоясь о повышении персонала или нагрузки. Он обеспечивает согласованность во всей инфраструктуре, улучшает автоматизацию и смягчает человеческую ошибку.
Неизбежный
Anisible — это очень мощный и популярный инструмент управления конфигурацией. Вот несколько быстрых фактов, которые заинтересуют вас о неизбежном:
- Имя «Anisible» изначально относится к категории вымышленных технологий, способных быстрее, чем легкая связь. Он может отправлять и получать сообщения в и с соответствующего устройства на любое расстояние или препятствие без задержки.
- Его название используется в фантастических фильмах (E.g Enders Game) и романы (Ursula).
- В игре конденсатора история зависит от неизбежного для централизованного контроля огромного, сложного парка от далеких кораблей. Это было то, что вдохновило односмысленные основатели программного обеспечения для автоматизации, чтобы выбрать термин как имя для их продукта.
- Разработано Майклом Деханом, создателем сапоги и функционала.
Anisible — это агентом Push-bated Инструмент настройки, который Функции, подключая через SSH к его управляемым узлам. Это не нужно Специальный агент на узле и работает, толкая модули на клиенты. Модули затем выполняются локально на узле, а Выход отталкивается обратно к контроллеру или хосту.
Дрейф Это процесс внесения изменений на хост, который делает его отличаться от синхронизации.
Узлы для демонстрации:
- Spin-Up 3 Ubuntu Linux VMS на Portal.azure.com
- Сделать пользователя = агент , пароль = Пароль @ 101. .
- Скопируйте IP-адреса всех 3 виртуальных машин
SSH в любой, который будет служить нашим контрольным узлом и действовать следующим образом.
Обязательная установка:
Шаг 1 : Выполнить обновление к пакетам
sudo apt update
Шаг 2 : Установите программное обеспечение — общий пакет
sudo apt install software-properties-common
Шаг 3 : Добавить Anbible Archive Pauble Package
sudo apt-add-repository ppa:ansible/ansible
Шаг 4: Установить Anbible
sudo apt install ansible
Чтобы проверить вашу установку, сделать:
ansible --version
Ошибные AD-HOC команды:
Это один из самых простых способов, которыми можно использовать, чтобы выпустить некоторые команды на сервере или кучу серверов. Ad-HOC команды не контролируются версией, но представляют собой быстрый способ взаимодействия с нужными серверами.
ansible -m ping localhost
— m ==> Модуль Пинг ==> Имя модуля Localhost ==> Целевой узел
ansible -m copy -a 'src=./file1.txt dest=~/file.txt' localhost
Чтобы увидеть, будут ли некоторые изменения будут реализованы, сделайте сухой пробег. Добавить ‘—Крек’ к команде. Чтобы увидеть изменения, которые будут реализованы, добавьте «—дифф». « Одновник flag diff реализует изменения после того, как указываете на вас.
Idempotency:
Это свойство IAC, которое обеспечивает определенное развертывание инфраструктуры устанавливает целевую среду для желаемого состояния, каждый раз, когда он работает, независимо от его начального состояния. Поставщик IAC решит, что нужно вставать, разорвать или переконфигурить, чтобы соответствовать вашему описанному целевому состоянию.
Anisible Playbook
Обязательный PlayBook является более читаемым, версительным способом выполнения задач с использованием Anbible. По сравнению с помощью Ad-HOC команд, игровые книги используются в сложных сценариях, и они предлагают повышенную гибкость и возможности. Playbooks используют формат YAML, поэтому необходимо не так много синтаксиса, но его правила отступа строги. Обязательные детски, как правило, больше языка конфигурации, чем язык программирования.
Как и его название, Playbook — это коллекция пьес. Игра — это набор инструкций оркестрации.
---
#ansible -m copy -a "src=./file1.txt dest=~/file1.txt" localhost
- name: Play name
hosts: localhost
tasks:
- name: Copy a file
copy:
src: ./file1.txt
dest: ~/file1.txt
- Обязательный игровой книг начинается с 3 тире.
- «#» указывает на линию комментариев.
- Имя — имя указывает не выполненное имя, которое служит описательной цели.
- Хосты указывают целевое узловое устройство или группы.
- Задача состоит из действия и его аргументов.
- Под заданными вы можете указать ваши модули и его параметр.
Если действие, которое вы хотите, требуется root/sudo, используйте » Стать Ключевое слово для привилегии эскалации.
Аналимый инвентарь
Anisible использует инвентарь для определения его управляемых хостов. Файл хоста по умолчанию:
/etc/ansible/hosts
Здесь вы определяете свои узлы, псевдоним узла, узлы и переменные. Создайте группу с IP-адресами VMS, которые вы создали.
[master] host1 ansible_host=192.168.100.2 ansible_user=agent ansible_password=password@101 [agents] node1 ansible_host=192.168.100.3 ansible_user=agent ansible_password=password@101 node2 ansible_host=192.168.100.4 ansible_user=agent ansible_password=password@101
« Аналогичный инвентарь «Команда используется для работы с управляемыми узлами. Чтобы увидеть полный список всех наших узлов типа:
ansible-inventory --list
Для более графического использования компоновки:
ansible-inventory --graph
- @Localhost относится к текущему/контрольному узлу
- @all относится ко всем узлам
- @group_name Нацелен на все узлы под группой.
Чтобы упростить наш файл хоста, определите все переменные в [All: vars] Группа:
[all:vars] ansible_user=agent ansible_password=password@101 [master] host1 ansible_host=192.168.100.2 [agents] node1 ansible_host=192.168.100.3 node2 ansible_host=192.168.100.4
Примечание : Поскольку Anisible собирается сделать SSH-соединение с паролем на эти машины, нам нужно установить «sshpass».
sudo apt install sshpass -y
Давайте попробуем проверить наши хозяева с пинг команда:
ansible -m ping all
Дает нам ошибку. Нам нужно изменить некоторую неспособную конфигурацию.
Anisible cfg.
Обязательный файл конфигурации — это именно то, что вы ожидаете, что это будет. Его находится по адресу:
/etc/ansible/ansible.cfg
Нам нужно будет открыть его и изменить настройку. Откройте файл и беспокойство: host_key_checking Или ввести его. Теперь вы можете запустить команду Ping:
ansible -m ping all
Написание плейбола
Создать файл:
touch playbook.yml
Откройте его и добавьте к нему следующее:
---
- name: play one - install vim from custom inventory
hosts: agents
become: true
tasks:
- name: apt
apt:
name: vim
state: latest
- name: zsh install
apt:
name: zsh
state: latest
- name: vagrant install
apt:
name: vagrant
state: latest
- name: nodejs install
apt:
name: nodejs
state: latest
- name: play two server config
become: true
hosts: master
tasks:
- name: ensure Nginx is at latest
apt:
name: nginx
state: latest
- name: start server
service:
name: nginx
state: started
Сохрани это.
Выполнение игрового книги
Чтобы выполнить игру, которую мы просто написали, мы используем команду «Ansible-Playbook». Войти:
ansible-playbook playbook.yml -v
-В для извлечения. Чем больше V будет более подробную информацию о том, что выводятся. Мы также можем выполнить PlayBook из пользовательского файла инвентаризации. Создайте пользовательский файл инвентаризации.
touch inventory
Добавлять узлы к нему.
Ping проверить его со следующим:
ansible -I inventory -m ping all
Запустите игрушку с него с:
ansible-playbook -I inventory playbook.yml
Теперь, как окончательная демо, давайте выключим наши VMS, чтобы избежать дополнительных расходов. Так как мы знаем, что это может сделать всевозможные вещи, давайте использовать его для этой демонстрации. Можете ли вы написать сценарий YAML для этого? Попробуйте сначала. Это простой.
---
- name: shut down all my agent VMs
hosts: all
become: true
tasks:
- name: run shutdown command
command: shutdown
Сохранить и выполнить это:
ansible-playbook shutdownVMs.yml -vv
Azure Cloudshell имеет все, что нам нужно для выполнения как несейруемых Ad-Hoc Command и PlayBooks. Далее мы будем создавать виртуальную машину с его базовыми ресурсами из Azure Cloudshell.
Посетить Http://portal.azure.com и откройте облаку. Выберите Bash и введите следующее, чтобы открыть его Embedded VS Code Editor:
code .
Внутри редактора создайте azvmplaybook.yml и вставить следующее внутри:
- name: Create Azure VM
hosts: localhost
connection: local
tasks:
- name: Create resource group
azure_rm_resourcegroup:
name: myResourceGroup
location: eastus
- name: Create virtual network
azure_rm_virtualnetwork:
resource_group: myResourceGroup
name: myVnet
address_prefixes: "10.0.0.0/16"
- name: Add subnet
azure_rm_subnet:
resource_group: myResourceGroup
name: mySubnet
address_prefix: "10.0.1.0/24"
virtual_network: myVnet
- name: Create public IP address
azure_rm_publicipaddress:
resource_group: myResourceGroup
allocation_method: Static
name: myPublicIP
register: output_ip_address
- name: Dump public IP for VM which will be created
debug:
msg: "The public IP is {{ output_ip_address.state.ip_address }}."
- name: Create Network Security Group that allows SSH
azure_rm_securitygroup:
resource_group: myResourceGroup
name: myNetworkSecurityGroup
rules:
- name: SSH
protocol: Tcp
destination_port_range: 22
access: Allow
priority: 1001
direction: Inbound
- name: Create virtual network interface card
azure_rm_networkinterface:
resource_group: myResourceGroup
name: myNIC
virtual_network: myVnet
subnet: mySubnet
public_ip_name: myPublicIP
security_group: myNetworkSecurityGroup
- name: Create VM
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: myVM
vm_size: Standard_DS1_v2
admin_username: agent
admin_password: password@101
network_interfaces: myNIC
image:
offer: UbuntuServer
publisher: Canonical
sku: '18.04-LTS'
version: latest
Чтобы установить шариковую прокат, выполните это на Cloudshell:
ansible-playbook azvmplaybook.yml
Ждать его… Когда это сделано, перейдите к вашей группе ресурсов, чтобы проверить это. Вы можете даже SSH в вашу созданную VM. Когда закончите играть с ним, нам нужно очистить наши треки. Удобно, просто удаление нашей группы ресурсов примет все созданные ресурсы с ним. Итак, давайте сделаем только это. Создать rmrgplaybook.yml :
---
- hosts: localhost
tasks:
- name: Deleting resource group
azure_rm_resourcegroup:
name: myResourceGroup
state: absent
force_delete_nonempty: yes
Здесь мы устанавливаем force_delete_nonsempty Флаг ДА, чтобы дать ему удалить все базовые ресурсы. Теперь, чтобы положить его в игру:
ansible-playbook rmrgplaybook.yml
Спасибо за ваше время!
Оригинал: «https://dev.to/udujoel/ansible-from-enders-game-to-ending-drift-ofj»