Рубрики
Uncategorized

Anisible: Игра Эндера

Управление конфигурацией Цель управления конфигурацией — поддерживать системы … Помечено с помощью Anbible, Config, Automation, Devops.

Управление конфигурацией

Цель управления конфигурацией — поддерживать системы в желаемом состоянии. Он направлен на устранение дрейфа конфигурации как можно больше. Дрифт конфигурации происходит при изменении и обновлениях конфигурации 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»