task automation using ansible playbooks
Научите аутоматизацију задатака помоћу Ансибле плаибоокс и Ансибле трезора за заштиту осетљивих података:
У нашем претходном туторијалу за одговор 1 , сазнали смо о различитим компонентама програма Ансибле и како инсталирати и конфигурисати овај алат са различитим модулима. Такође смо видели како се модули користе за извршавање једне функције или задатка.
У овом делу ћемо се осврнути на аутоматизацију задатака помоћу Ансибле плаибоокс и Ансибле трезора за заштиту осетљивих података.
Предложено читање => Водич за учење о ДевОпс-у
Питања и одговори за дизајн базе података
Шта ћете научити:
Ансибле Плаибоокс
Видели смо како да покренемо појединачне задатке или једнократне задатке помоћу модула, али шта ако требате извршити више задатака? Плаибоок-ови помажу у њиховом покретању на скриптирани начин.
Плаибоок дефинише променљиве, конфигурације, кораке примене, додељује улоге, извршава вишеструке задатке. За На пример. КОПИРАЈ / БРИШИ Датотеке и мапе, инсталирајте пакете, покрените услуге. Дакле, првенствено су књиге за игре дефинисане тако да оркестрирају кораке на више машина или сервера и доведу их све у одређено жељено стање.
Плаибоок је написан на ИАМЛ формат са наставком датотеке .имл. Треба бити врло опрезан са форматом и поравнањем што га чини врло осетљивим.
Садржи следеће одељке:
- Свака књига са играма започиње са 3 цртице „-“
- Домаћин одељак - дефинише циљне машине на којима би требало да ради књига са играма. Ово се заснива на датотеци инвентара Ансибле.
- Променљиви одељак - Ово није обавезно и може пријавити све променљиве потребне у приручнику. Осврнућемо се и на неке примере.
- Одељак задатака - Овај одељак наводи све задатке које треба извршити на циљној машини. Наводи употребу модула. Сваки задатак има име које је мали опис онога што ће задатак урадити и који ће бити наведен током извођења приручника.
На пример,
Ако треба да инсталирамо и конфигуришемо Томцат, он ће се састојати од следећих задатака:
- Преузмите и инсталирајте Томцат
- Конфигуришите Томцат
- Покрени Томцат
Слично томе, још једанПримерза употребу Томцата који се користи у континуираној испоруци ДевОпс-а, задаци могу бити следећи:
- Заустави апликацију
- Деинсталирајте апликацију
- Инсталирајте нову верзију ВАР датотеке.
- Покрените апликацију
Пример формата Плаибоок
--- Playbook start - hosts: webservers Specify the group or servers as per inventory to execute tasks become: true tasks: - name: Copy Tomcat ZIP file to install location Short description of the task copy: src=/home/ansible/niranjan/apache-tomcat-8.5.31.tar.gz dest=/opt/niranjan/tomcat
У горњој скрипти погледајте поравнање почев од врха и мора се одржавати јер ћете добити синтаксне грешке.
Да бисте покренули било коју књигу песама, користите следећу команду
$ ansible-playbook
Да бисте проверили да ли у приручнику постоје синтаксне грешке
$ ansible-playbook --syntax-check
Да бисте прегледали листу хостова
$ ansible-playbook --list-hosts
Прављење књига са примерима
У овом одељку видећемо више примера како да направите књиге за игру које ће вам можда требати да редовно користите. Ове књиге игара ће бити потребно створити и покретати из контролне машине.
Спремите све доленаведене књиге за репродукцију у .имл датотеку и покрените као што је приказано доле.
$ ansible-playbook filename.yml
Пример 1: Направите датотеку на циљним машинама или серверима, као што је поменуто у датотеци инвентара и групи веб сервера, сачувајте доњи код са наставком .имл и покрените књигу приручника.
- hosts: webservers become: true tasks: - name: Create a file file: path=/home/ansible/niranjan.txt state=touch
У горњем примеру смо користили датотека модул за креирање датотеке.
Пример 2: Направите директоријум са режимом 775 и власником / групом као Ансибле.
--- - hosts: webservers become: true tasks: - name: Create directory file: path=/home/ansible/niranjan state=directory mode=775 owner=ansible group=ansible
Пример 3: Направите више директоријума. Да бисте креирали више директорија са једним задатком, можете користити петљу витх_итемс изјава. Дакле, када покренете доњи приручник то се тумачи као 3 различита задатка.
--- - hosts: webservers become: true tasks: - name: Create multiple directories file: path={{item}} state=directory with_items: - '/home/ansible/vn1' - '/home/ansible/vn2' - '/home/ansible/vn3'
Пример 4: Направите корисника. Погледајмо корисник модул за креирање и брисање корисника у плаибоок-у.
--- - hosts: webservers become: true tasks: - name: Create User user: name=niranjan password=niranjan groups=ansible shell=/bin/bash
Пример 5: Уклони корисника. Уклањање корисника је врло једноставно и биће му потребан стање да се постави на одсутан . Ово је еквивалентно усердел наредба у Линуку.
--- - hosts: webservers become: true tasks: - name: Remove User user: name=niranjan state=absent remove=yes force=yes
У горњој књизи игара, уклонити = да уклониће кућни директоријум и сила = да уклониће датотеке из директоријума.
Пример 6: Копирајте садржај у датотеку помоћу модула за копирање.
Ако требате копирати датотеку на циљне машине или сервере, користите срц и дест у модулу за копирање.
--- - hosts: webservers become: true tasks: - name: Copy content to file copy: content='Hello World Niranjan
' dest=/home/ansible/niranjan.txt
На пример,
copy: src=/home/ansible/niranjan.txt dest=/tmp/niranjan.txt
Пример 7: Замените све инстанце низа.
Користећи заменити модул можемо реч заменити другом речју. Заменљивом модулу ће требати 3 параметра, тј. „Патх“, „регекп“ (за проналажење одређене речи) и „реплаце“ (пружање друге речи за замену).
- hosts: webservers tasks: - name: Replace example replace: path: /home/ansible/niranjan.txt regexp: 'hello' replace: 'world'
Пример 8: Архивирајте или ЗИП датотеке и мапе
Користећи Ансибле архива модул можете компресовати датотеке или фасцикле у „зип“, „.гз“ или „бз2“ формат.
Белешка : Датотеке или фасцикле које ће се компресовати требале би бити доступне на циљним серверима и на њима би требали бити инсталирани пакети за тар, бзип2, гзип, зип датотеку. За инсталирање ових пакета можете имати посебан задатак из плаибоок-а.
--- - hosts: all become: true tasks: - name: Ansible zip file example archive: path: /home/ansible/niranjan.txt dest: /home/ansible/niranjan.zip format: zip
Горња књига приручника ће створити датотеку нирањан.ткт у датотеку нирањан.зип
--- - hosts: all tasks: - name: Ansible zip multiple files example archive: path: - /home/ansible/niranjan1.txt - /home/ansible/niranjan2.txt dest: /home/ansible/niranjan.zip format: zip
Горња књига приручника архивираће више датотека у датотеку нирањан.зип.
- hosts: all tasks: - name: Ansible zip directory example archive: path: - /home/ansible dest: /home/ansible/niranjan.zip format: zip
Горња књига приручника ће створити све датотеке у директоријуму / хоме / ансибле.
Пример 9: Рад са датумом и временском ознаком
Коришћење системског датума и временске ознаке помаже у одређеним статусима или у сврху евидентирања. Чињенице Ансибле омогућавају приступ датуму и времену удаљених или циљних сервера. Тако да можемо користити модул за отклањање грешака да бисте исписали излаз заједно са где атрибут као што је приказано доле.
--- - hosts: webservers become: true tasks: - name: Date and Time Example in Ansible debug: var=ansible_date_time.date
Горња књига приручника приказује датум.
--- - hosts: webservers become: true tasks: - name: Date and Time Example in Ansible debug: var=ansible_date_time.time
Горња књига прилога приказује време.
- hosts: all tasks: - name: Ansible timestamp filename example command: touch niranjan{{ansible_date_time.date}}.log
Горња књига приручника створиће динамичку датотеку на основу тренутног датума за На пример . нирањан2018-07-15.лог
Пример 10: Пример променљивих
Променљиве се користе за чување вредности. У доњем примеру, декларишем променљиву име са вредношћу нирањан . Излаз ће бити нирањан .
- hosts: all vars: name: niranjan tasks: - name: Ansible Basic Variable Example debug: msg: '{{ name }}'
Такође можемо имати низ или листу променљивих као у наставку Пример .
- hosts: all vars: name: - Vasudevamurthy - Niranjan tasks: - name: Ansible Array Example debug: msg: '{{ name(1) }}'
Индексирање низа почиње од НУЛЕ (0). Отуда ће излаз у горњем примеру бити Нирањан.
Пример 11: Региструјте променљиве
Такође можемо бележити излаз било ког задатка у променљиву регистра.
- hosts: all tasks: - name: Ansible register variable basic example shell: 'find *.txt' args: chdir: '/home/Ansible' register: reg_output - debug: var: reg_output
Напомена: За приказ - користите атрибут мсг и за хватање било које вредности користите атрибут вар у - дебуг модулу
Пример 12: Плаибоок за инсталирање вим едитор-а и ГИТ-а на циљне сервере или машине.
У овом приручнику смо користили њам модул за инсталирање најновије верзије софтверских пакета.
--- - hosts: webservers become: true tasks: - name: Install Package yum: name=vim,git state=latest
Пример 13: Инсталирајте Апацхе сервер. Сачувајте доњи код и покрените плаибоок као што је приказано доле.
--- - hosts: webservers become: true tasks: - name: Install Package yum: name=httpd state=present - name: Start httpd service service: name=httpd state=started
Осим њам модул, услуга модул се такође користи за покретање услуге хттпд. Задаци се синхроно изводе од врха до дна.
Пример 14: Инсталирајте ЈДК
најбоља апликација за преузимање иоутубе видео записа
Следећи приручник ће аутоматизовати инсталирање ЈДК 8 на све циљне машине или сервере. ЈДК је предуслов за већину осталих софтверских пакета као што су Мавен или Томцат.
--- - hosts: webservers become: true vars: download_url: http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.rpm tasks: - name: Download JDK 8 RPM file command: 'wget --no-check-certificate --no-cookies --header 'Cookie: oraclelicense=accept-securebackup-cookie' {{download_url}} ' - name: Install JDK 8 command: 'rpm -ivh jdk-8u171-linux-x64.rpm'
Пример 15: Инсталирајте Мавен
Задаци су преузимање мавен датотеке са УРЛ адресе помоћу гет_урл модул, извадите преузету датотеку, преместите је у мањи директоријум, ажурирајте и покрените профил где је мавен додан у путању.
--- - hosts: webservers become: true tasks: - name: Download Maven get_url: url=http://www-us.apache.org/dist/maven/maven-3/3.5.3/binaries/apache-maven-3.5.3-bin.tar.gz dest=/opt/niranjan/apache-maven-3.5.3-bin.tar.gz - name: Extract Maven command: tar xvf /opt/niranjan/apache-maven-3.5.3-bin.tar.gz -C /opt/niranjan - name: Move to a smaller directory command: mv /opt/niranjan/apache-maven-3.5.3 /opt/niranjan/maven - name: Update Profile copy: content='export M2_HOME=/opt/niranjan/maven
' dest=/etc/profile.d/maven.sh # lineinfile is used to add additional or append lines to existing files. - lineinfile: path: /etc/profile.d/maven.sh line: 'export PATH=${M2_HOME}/bin:${PATH}' - name: Source profile shell: source /etc/profile.d/maven.sh
Пример 16: Инсталирајте Томцат 8
Доња књига приручника помаже вам да инсталирате и покренете Томцат 8 на циљане машине или сервере.
Можете кликнути овде да бисте копирали локацију везе најновије верзије Томцат 8. Кликните овде за УРЛ који садржи Томцат 8 тар датотеку коју сам користио у овој књизи приручника.
--- - hosts: webservers become: true gather_facts: no tasks: - name: Download Tomcat get_url: url=http://www-us.apache.org/dist/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz dest=/home/ansible - name: Extract the file downloaded tomcat file command: tar xvf apache-tomcat-8.5.32.tar.gz - name: Move the Tomcat directory to a smaller one command: mv apache-tomcat-8.5.32 tomcat - name: Change Ownership and group of the Tomcat directory file: path=/home/ansible/tomcat owner=ansible group=ansible mode=775 state=directory recurse=yes - name: Start Tomcat command: nohup /home/ansible/tomcat/bin/startup.sh # Execute command even after you have exited from the shell prompt become: true become_user: ansible
Пример 17: пре_задатке, пост_задатке и ознаке
Можете користити пре_задатке и пост_задатке за покретање одређених задатака пре или после извођења главног задатка.
Обично у књизи за игру имате толико задатака који се извршавају. Шта ако треба да извршите само одређени задатак? Ознаке су одговор на то. Погледајмо доњу опцију која има све 3 опције. Има 2 задатка, тј. Један са ТАГ-ом и један без ТАГ-а.
--- - name: Pre , Post tasks and Tags example hosts: localhost become: true tags: - niranjan pre_tasks: - debug: msg='Started task with tag - niranjan. tasks: - name: Going to execute the main task debug: msg='Currently in the target server' post_tasks: - debug: msg='Completed task with tag - niranjan. - name: Play without tags hosts: localhost become: true tasks: - name: Command to list files shell: ls -lrt > niranjan.txt
Погледајмо шта се дешава током покретања књиге са опцијом –лист-тагс
$ ansible-playbook preposttagseg.yml --list-tags
Излаз горе изгледа боље и јасније. Плаи # 1 има ознаку нирањан, али Плаи # 2 нема ниједну ознаку.
Ако требате извршити задатке са ознаком нирањан, тада би наредба за покретање била:
$ ansible-playbook preposttagseg.yml --tags niranjan
Друга репродукција се не извршава и датотека није креирана.
Пример 18: Руковаоци
Било који софтверски пакет ће имати конфигурационе датотеке и све промене на њему имаће ефекта тек када се услуга поново покрене. Дакле, потребно је да услуга буде постављена за поновно покретање. За На пример. У доњем приручнику ако га покренете више пута, услуга ће се ионако поново покренути, без обзира на промене или не, што није тачно.
--- - hosts: webservers tasks: - name: Install the apache Package yum: name=httpd state=latest - name: Copy httpd configuration file copy: src=/home/ansible/httpd.final dest=/etc/httpd/conf/httpd.conf - name: Copy index.html file copy: src=/home/ansible/index.html dest=/var/www/html
# This service below is executed irrespective of changes done or not to any config files - name: Start and Enable httpd service service: name=httpd state= restarted enabled=yes
Дакле, услугу морамо поново покренути само ако су промене извршене на конфигурационим датотекама. Руковаоци пружају ту особину.
Дакле, правилан проток са хендлерима био би имати а обавести опција.
--- - hosts: webservers become: true tasks: - name: Install httpd package yum: name=httpd state=latest - name: Copy the httpd configuration file copy: src=/home/ansible/httpd.final dest=/etc/httpd/conf/httpd.conf - name: Copy index.html file copy: src=/home/ansible/index.html dest=/var/www/html notify: - restart httpd - name: Start httpd service service: name=httpd state=started enabled=yes handlers: - name: restart httpd service: name=httpd state=restarted
Дакле, по први пут ће Апацхе сервер бити инсталиран и покренут. Чак и ако поново покренете књигу приручника без икаквих извршених промена, услуга хттпд се неће поново покренути јер је већ покренута.
Ако постоје неке промене на конфигурационим датотекама или ако се ХТМЛ датотеке промене, након покретања плаибоок-а, руковатељ је обавештен да поново покрене услугу. Име у одељку за обавештавање и обрађивачи требало би да буду исти. Обрађивач је написан као и било који други задатак, али се позива само ако постоје промене.
Ансибле Ваулт
У већини случајева када осетљиви или поверљиви подаци морају бити заштићени у приручнику, они се могу шифровати, а не само чувати у текстуалној датотеци која је свима читљива. Ансибле Ваулт вам омогућава да шифрујете књигу приручника ради заштите поверљивих података.
На пример, размотрите следећи задатак када се копира поверљиви уговор о послу.
У таквим случајевима потребан вам је Ансибле трезор.
--- - hosts: webservers become: true tasks: - name: Copying Confidential Job Agreement copy: content='This is a Confidential Job Agreement' dest=/home/ansible/jobagreement.txt
Следе кораци које требате следити за шифровање горе наведених датотека плаибоок-а.
# 1) Стварање нових шифрованих датотека
Да бисте креирали нове шифроване датотеке са трезором, користите ансибле-ваулт створити команда.
$ ansible-vault create jobagreement.yml
Након потврде лозинке отвориће се прозор за уређивање за додавање садржаја у датотеку.
Ансибле ће шифрирати садржај када затворите датотеку. Уместо да видите стварни садржај, видећете шифроване блокове.
# 2) Да бисте шифровали постојећу имл датотеку, користите следеће
$ ansible-vault encrypt existingfile.yml
За шифровање ће се поново тражити лозинка.
# 3) Преглед шифроване датотеке
Користите команду поглед на анзибилни свод да погледа стварни садржај датотеке.
$ ansible-vault view jobagreement.yml
Од вас ће се поново тражити лозинка да бисте погледали садржај датотеке.
# 4) Уређивање шифрованих датотека
Ако требате уредити датотеку, користите наредбу ансибле-ваулт едит
$ ansible-vault edit users.yml
Унесите лозинку за уређивање датотеке.
# 5) Промена лозинке шифрованих датотека
Користите команду ансибле-ваулт рекеи за промену лозинке датотеке.
$ ansible-vault rekey jobagreement.yml
# 6) Покрените шифровану датотеку књиге за репродукцију Ансибле
Користите опцију –аск-ваулт-пасс са наредбом ансибле-плаибоок.
$ ansible-playbook users.yml --ask-vault-pass
# 7) Ручно дешифровање шифрованих датотека
Користите наредбу ансибле-ваулт децрипт наредбу.
$ ansible-vault decrypt jobagreement.yml
Резиме
У овом упутству смо видели два најважнија аспекта управљања конфигурацијом, а то су Ансибле Плаибоокс и заштита осетљивих података помоћу Ансибле трезора.
Горе наведени примери књига приручника дали би вам идеју како да аутоматизујете различите задатке у различитим сценаријима током испоруке софтвера.
У нашем предстојећем водичу видећемо како модуларизовати Плаибоок користећи улоге Ансибле, интегрисати се са Јенкинсом и најважнији аспект за рад са модулима Ансибле С3 и ЕЦ2 за управљање АВС инстанцама (Креирање и укидање ЕЦ2 инстанци).
бесплатна апликација за преузимање мп3-а за андроид телефон
ПРЕВ Туториал |. | СЛЕДЕЋА Лекција
Препоручено читање
- Водич за Ансибле: Инсталација и употреба са Ансибле модулима
- Команде СееТест Аутоматион: Детаљно објашњење са примерима
- Одговорне улоге, интеграција са Јенкинс-ом у ДевОпс-у и ЕЦ2 модули
- Како развити тест скрипте помоћу 5 најпопуларнијих оквира за аутоматизацију теста (примери)
- Оквир аутоматизације тестова без скрипти: алати и примери
- Питхон ДатеТиме Водич са примерима
- Изрежи команду у Унику са примерима
- Тест аутоматизација - да ли је то специјализована каријера? Могу ли нормални тестери да раде и аутоматизацију?