ansible roles integration with jenkins devops
Поглиблений огляд модулів Ansible Roles, інтеграції з Jenkins та модулів Ansible S3 та EC2:
У частині 2 з серія з підручників Ansible , ми дізналися, як ігрові книги Ans1ible використовуються для виконання кількох завдань і приведення всіх цільових машин або серверів до певного бажаного стану.
Рекомендуємо прочитати => Експоненціальна навчальна серія DevOps
Ansible playbooks - це в основному файли YAML, які містять кілька завдань в одному величезному файлі, який не є модульним та багаторазовим. Але якщо вам потрібно розбити всю конфігурацію і бути більш модульним та багаторазовим, тоді ролі Ansible дуже допоможуть.
У цьому підручнику з відповідей , ми розглянемо ролі Ansible, інтегруємо Ansible з Jenkins для постійної доставки з точки зору DevOps і найголовніше розглянемо модулі Ansible S3 та EC2 для управління екземплярами AWS EC2 (Створення та припинення екземплярів EC2).
Що ви дізнаєтесь:
- Відповідні ролі
- Інтеграція Дженкінса з Ansible
- Керуйте об’єктами AWS S3 за допомогою Ansible
- Надайте екземпляр AWS EC2 за допомогою Ansible
- Припинення екземплярів EC2
- Резюме
- Рекомендована література
Відповідні ролі
За допомогою ролей Ansible ви можете групувати свої змінні, завдання, обробники тощо, що збільшує можливість повторного використання та, безсумнівно, зменшує синтаксичні помилки. Це допомагає знищити цілий код.
Відповідальні ролі подібні до модулів у ляльках та кулінарних книгах у шеф-кухаря.
Для створення ролей ви використовуєте ансібле-галактика команда, яка має всі шаблони для її створення.
Приклад сценарію
Більшу частину свого життя я був спеціалістом DevOps і працював лише в CI та CD.
Отже, для прикладу в режимі безперервної доставки, де я розгортаю нову збірку мого додатка J2EE (файл WAR), щоб tomcat мої кроки були такими:
- Зупиніть програму
- Видаліть програму
- Розгортання нової збірки програми
- Запустіть програму
Отже, я буду створювати роль принаймні з 4 завданнями та одним основним файлом, який її називає. Таким чином я роблю свій код більш модульним та багаторазовим. Тож назвемо цю роль як котик і створити його.
$ cd /etc/ansible/roles $ sudo ansible-galaxy init tomcat --offline
Після створення ролі ви можете побачити структуру каталогів, яку вона створила.
Основні компоненти, які ми будемо використовувати в цьому розділі, включають:
- завдання / головний.имл - Це відправна точка для завдань, створених для ролі. Ви можете використовувати файл main.yml для вказівки на інші файли завдань.
- чия - Це для визначення будь-яких використовуваних змінних.
- мета - Це для визначення інформації про себе чи автора.
Крок 1: Створіть основний список усіх завдань
Відредагуйте завдання / головний.имл файл і додайте код нижче. Відповідно до згаданого вище прикладу сценарію, ми визначаємо 4 різні завдання. У більшості випадків програма для розгортання також запускає програму, тому остання з запущеної програми може не знадобитися.
--- # tasks file for tomcat - import_tasks: stop_app.yml - import_tasks: uninstall_app.yml - import_tasks: deploy_app.yml - import_tasks: start_app.yml
Крок 2: Створіть усі 4 файли відповідно до сценарію
У наведених нижче завданнях дія: ec2_facts використовується для отримання фактів із віддалених екземплярів EC2 та виклику їх у відтвореннях / завданнях
task / stop_app.yml
--- - name: Gather EC2 instance metadata action: ec2_facts - name: Stop application on {{ansible_hostname}} command: wget 'http://{{tomcat_user}}:{{tomcat_pwd}}@{{ansible_ec2_public_ipv4}}:8080/manager/text/ stop ?path=/HelloWorld-Maven' -O - -q
Завдання / uninstall_app.yml
--- - name: Gather EC2 instance metadata action: ec2_facts - name: Undeploy application on {{ansible_hostname}} command: wget 'http://{{tomcat_user}}:{{tomcat_pwd}}@{{ansible_ec2_public_ipv4}}:8080/manager/text/undeploy?path=/HelloWorld-Maven' -O - -q
task / deploy_app.yml
--- - name: Deploy the new WAR file to target servers copy: src=/var/lib/jenkins/workspace/Demo-Maven-Project/target/HelloWorld-Maven.war dest=/home/ansible/tomcat/webapps
У коді розгортання, якщо JENKINS використовується для побудови файлу WAR, тоді вам потрібно вказати вихідний каталог файлу WAR у копію модулем, а місце призначення - розташування веб-додатків цільового сервера tomcat.
task / start_app.yml
--- - name: Gather EC2 instance metadata action: ec2_facts - name: Start application on {{ansible_hostname}} command: wget 'http://{{tomcat_user}}:{{tomcat_pwd}}@{{ansible_ec2_public_ipv4}}:8080/manager/text/start?path=/HelloWorld-Maven' -O - -q
Крок 3: Визначте змінні
Відредагуйте vars / main.yml файл і додайте код, як показано нижче.
--- # vars file for tomcat tomcat_user: tomcat tomcat_pwd: tomcat
Крок 4: Визначте інформацію в мета-папці
Відредагуйте файл meta / main.yml і додайте свою інформацію, наприклад, автора, опис та компанію.
список безкоштовних постачальників послуг електронної пошти в США
galaxy_info: author: V Niranjan description: Devops specialist company:
Крок 5: Створіть головний файл site.yml
Нарешті, створіть головний файл site.yml, щоб викликати створену роль, яка, у свою чергу, допоможе розгорнути додаток на серверах або список хостів відповідно до файлу інвентаризації. Створіть файл як /etc/ansible/site.yml
--- - hosts: webservers become: true roles: - apache
Крок 6: Запустіть файл playbook site.yml
$ ansible-playbook site.yml
Запустіть URL-адресу Tomcat, щоб побачити, чи застосовано та запущено програму.
HTTP: //: portno / manager
Інтеграція Дженкінса з Ansible
У цьому розділі ми побачимо, як Дженкінса можна інтегрувати з Ansible. Файл WAR, побудований за допомогою процесу побудови, буде використаний для розгортання до Tomcat на цільовій машині за допомогою Ansible. Ми будемо називати роль Ansible, створену в попередньому розділі в Jenkins, використовуючи плагін Ansible.
Отже, як тільки побудова завершиться, розгортання файлу WAR буде автоматично ініційовано за допомогою Ansible.
Я зберігаю це просто і не налаштовував Sonar, Artifactory чи Junit під час безперервної інтеграції, яку також можна зробити.
Крок 1: Створіть завдання Дженкінса та налаштуйте репозиторій SCM, використовуючи код у GitHub
Крок 2: Налаштуйте збірку
Крок 3: Створіть каталог ролей у робочій області Дженкінса
Крок 4: Створіть роль tomcat у робочому просторі Дженкінса, використовуючи команду, показану нижче
$ sudo ansible-galaxy init tomcat –офлайн
Виконайте процедуру, як у попередньому розділі, щоб створити всі файли для завдання, vars, мета та основний сайт.имл.
що таке управління даними тестування при тестуванні програмного забезпечення
Головний site.yml файл створюється в / var / lib / Jenkins / workspace / каталог.
Крок 5: Налаштуйте крок Jenkins після збірки, щоб викликати програму Ansible і викликати файл site.yml. Збережіть роботу.
Крок 6: Запустіть завдання збірки та запустіть URL-адресу Tomcat, щоб перевірити, чи правильно розгорнуто програму.
Керуйте об’єктами AWS S3 за допомогою Ansible
Модуль Ansible S3 може бути використаний для отримання або розміщення файлу в сегменті S3 або з нього. Для використання цього модуля нам потрібно буде встановити та налаштувати голосувати модуль python, який діє як API (інтерфейс прикладних програм) для доступу до AWS. Це має бути встановлено на Відповідальна машина управління.
На Redhat Linux
$ sudo yum install -y python python-dev python-pip
На Ubuntu
$ apt-get install -y python python-dev python-pip
Після завершення вищевстановленого встановіть boto
$ sudo pip install boto boto3
Якщо не вдається встановити, вам потрібно буде ввімкнути репо EPEL. З цією процедурою можна ознайомитись у частині 1 серії статей у розділі встановлення Ansible.
Як тільки вищезазначене буде зроблено, ми також повинні надати облікові дані користувача AWS. Ви можете експортувати змінні середовища AWS Access та Secret Key
export AWS_ACCESS_KEY_ID='AK123' export AWS_SECRET_ACCESS_KEY='abc123'
Якщо у випадку, якщо навіть після встановлення вищезазначених змінних середовища ви отримаєте помилку, оскільки облікові дані не знайдені, ви також можете вказати те саме в книзі відтворення.
Давайте зараз розглянемо кілька прикладів того, як використовувати Ansible з сегментами S3, а потім і для створення та завершення екземплярів.
Приклад 1:Створіть порожнє відро з папкою
--- - hosts: localhost become: true tasks: - name: Create an S3 bucket s3: aws_access_key= aws_secret_key= bucket=ansiblevnbucket object=/development mode=create permission=public-read region=ap-south-1
Примітка: Тут створений режим для створення сегмента, а Дозвіл може бути відкритим для читання або публічним читанням-записом
Запустіть ігрову книгу та перегляньте відро, створене разом із папкою для розробки.
Приклад 2:Щоб скопіювати (завантажити) файл у сегмент S3
--- - hosts: localhost become: true tasks: - name: Copy file to S3 bucket s3: aws_access_key= aws_secret_key= bucket=ansibleniru object=/niru.txt src=/home/ansible/niru.txt mode=put
Тут об’єктом є файл, створений у сегменті. Це може бути файл або папка. У цьому випадку це файл. Джерелом є файл, який береться з локальної машини, яка є машиною управління Ansible.
Примітка:Тут встановлено режим завантаження об'єкта
Запустіть книгу і подивіться на відро S3.
Приклад 3:Отримайте (завантажте) файл із сегмента S3
--- - hosts: localhost become: true tasks: - name: Download file from S3 bucket s3: aws_access_key= aws_secret_key= bucket=ansibleniru object=/niru.txt dest=/home/ansible/niranjan.txt mode=get
Примітка:Тут режим get для завантаження об'єкта
Приклад 4:Видаліть об’єкт або файл із сегмента S3
--- - hosts: localhost become: true tasks: - name: Delete an S3 bucket aws_s3: aws_access_key= aws_secret_key= bucket=ansiblevnbucket object=/development/niranjan.txt mode=delobj
Примітка:Тут режим delobj для видалення об'єкта
Приклад 5:Видаліть відро та весь вміст
--- - hosts: localhost become: true tasks: - name: Delete an S3 bucket s3: aws_access_key= aws_secret_key= bucket=ansiblevnbucket mode=delete
Примітка:Тут режим видалення для сегмента видалення
Надайте екземпляр AWS EC2 за допомогою Ansible
Нарешті, я залишаю вам одну з найважливіших функцій Ansible, яка полягає у створенні або обертанні екземпляра AWS EC2, а також у тому, як припинити екземпляр. Звичайно, не забудьте встановити голосувати що є необхідною умовою, а також гарантує експорт користувача “AWS_ACCESS_KEY_ID” та “AWS_SECRET_ACCESS_KEY”.
Якщо експорт не працює, переконайтеся, що ви додали те саме в код, як показано нижче.
протестуйте мій веб-сайт в різних браузерах
У наведеному нижче коді показано, як створити екземпляр EC2 разом із створенням групи безпеки та пари ключів.
- Створіть групу безпеки
- Створіть пару ключів і файл PEM
- Створити екземпляр EC2
- Збережіть IP-адресу екземпляра EC2 у файлі інвентаризації ansible
Я припускаю, що користувачі, які виконують цю вправу, добре знають концепції AWS EC2.
Додайте наведений нижче код у файл і запустіть його, щоб перевірити створення екземпляра EC2 у консолі AWS. Оскільки код великий, він розділений на 2 сторінки, але переконайтеся, що ви зберігаєте все в одному файлі yml.
--- - hosts: localhost become: true gather_facts: False vars: region: ap-south-1 instance_type: t2.micro ami: ami-5b673c34 # RedHat Linux 7.5 hosts_file: /etc/ansible/hosts tasks: - name: Create security group ec2_group: aws_access_key: aws_secret_key: name: 'vniranjan' description: 'V Niranjan Security Group' region: '{{ region }}' rules: - proto: tcp from_port: 22 to_port: 22 cidr_ip: 0.0.0.0/0 - name: Create an EC2 key ec2_key: aws_access_key: aws_secret_key: name: 'vniranjan' region: '{{ region }}' register: ec2_key - name: Save private key (PEM file) copy: content='{{ec2_key.key.private_key}}' dest=/home/ansible/vniranjan.pem mode=0600 when: ec2_key.changed - name: Create an ec2 instance ec2: aws_access_key: aws_secret_key: key_name: vniranjan group: vniranjan # security group name instance_type: '{{ instance_type}}' image: '{{ ami }}' wait: true region: '{{ region }}' count: 1 # default count_tag: Name: Demo instance_tags: Name: Demo register: ec2 - name: Save IP to inventory file lineinfile: dest: '{{hosts_file}}' insertafter: '(webservers)' line: '{{item.private_ip}}' with_items: '{{ec2.instances}}'
Запустіть ігрову книгу
/ etc / ansible / розміщує файл інвентаризації, оновлений приватним IP
Увійдіть в екземпляр
ssh -i “vniranjan.pem” ec2-user@ec2-13-126-30-207.ap-south-1.compute.amazonaws.com
(Примітка:Клацніть на зображення нижче, щоб збільшити його)
Створена Група безпеки
Створено пару ключів
Припинення екземплярів EC2
У цьому розділі давайте дізнаємось більше про припинення екземплярів EC2.
На наступному екрані ви можете побачити, що запущено 2 екземпляри, і кроки для завершення будуть у такому порядку:
- Припиніть екземпляри EC2, використовуючи ідентифікатори екземпляра
- Видалити групу безпеки
- Видаліть пару ключів
Playbook, щоб припинити обидва екземпляри EC2
--- - hosts: localhost gather_facts: false connection: local vars: instance_ids: - 'i-05945003313d20603' # Replace these with your EC2 instance id’s - 'i-0ce5ce5820bddf610' region: ap-south-1 keypair_name: vniranjan securitygroup_name: vniranjan tasks: - name: Terminate EC2 instance ec2: aws_access_key: aws_secret_key: instance_ids: '{{instance_ids}}' region: '{{region}}' state: absent wait: true - name: Remove EC2 Key ec2_key: aws_access_key: aws_secret_key: name: '{{keypair_name}}' state: absent region: '{{region}}' - name: Remove Security Group ec2_group: aws_access_key: aws_secret_key: name: '{{securitygroup_name}}' state: absent region: '{{region}}'
Резюме
Сьогодні більшість ІТ-організацій розглядають якісь диференціатори, щоб виграти бізнес і продемонструвати те саме своїм клієнтам. Я б сказав, що автоматизація, безумовно, є одним із ключових відмінників.
За допомогою таких інструментів, як Ansible, я вважаю, що ви повинні мати можливість автоматизувати більшість повторюваних ручних завдань.
Отже, те, що ми з цього дізналися 3-частинна серія підручників Ansible демонструє Ansible як дуже популярний та потужний інструмент управління конфігурацією, який допомагає в різних областях автоматизації, починаючи від автоматизації завдань, розгортання додатків та хмарного забезпечення. Отже, ми в першу чергу говоримо про ІТ-оркестрацію.
Сподіваюся, вам сподобався вибір підручників з Ansible, і я впевнений, що ви б до цього часу отримали величезні знання щодо цієї концепції.
Далі ми дізнаємось, як інтегрувати Дженкінса із селеном, який також є частиною нашої навчальної серії DevOps.
НАЗАД Підручник | НАСТУПНИЙ підручник
Рекомендована література
- Підручник з Ansible: Встановлення та використання з Ansible модулями
- Постійна інтеграція в DevOps
- Постійна доставка в DevOps
- Інтеграція Дженкінса з селеном WebDriver: покроковий посібник
- Що таке інтеграційне тестування (Підручник із прикладом інтеграційного тестування)
- Інтеграція селену з JMeter
- Автоматизація завдань із використанням Ansible Playbooks та Ansible Vault з прикладами
- Постійне розгортання в DevOps