当前位置:网站首页>Automatic operation and maintenance sharp weapon ansible Playbook
Automatic operation and maintenance sharp weapon ansible Playbook
2022-07-06 17:33:00 【Tang Monk riding white horse】
One 、 Ad-Hoc The problem of
Through to AD-HOC Learning from , We found that AD-HOC Only simple commands can be executed on the managed node at a time .
And in daily work , We are often faced with a series of complex operations , For example, we may need to install software 、 Update configuration 、 A combination of a series of operations such as starting a service . And at that point it goes through AD-HOC It's a little too much to complete the task .
In this case ,Ansible The introduction of PLAYBOOK To help us solve such a complex problem .
Two 、 PlayBook What is it?
Playbook It is also usually translated into scripts . You can think of it as Ansible Customized one ⻔ Language ( Can be Playbook Compared to the Linux Medium shell, and Ansible Medium Module It can be compared to Linux Various commands in .)
3、 ... and 、 YAML Study
PlayBook follow YAML The grammar of . So I'm learning PlayBook Before , We have to figure it out first YAML Related knowledge .
1、YAML characteristic
YAML file
- With # Is the annotator
- With .yml perhaps .yaml ending
- With - - - Start , With … end , But the start and end flags are optional
2、 Basic grammar
- Case sensitive
- Use indentation to indicate hierarchy
- When indenting, use Tab Keys or spaces must be unified , Spaces are recommended .
- Elements of the same level must be left aligned ⻬ that will do
YAML There are three supported data structures
- character string
- list
- Dictionaries
2.1、 character string
---
# YAML Strings in can be without quotation marks , Even if there are spaces in it , Of course, there is nothing wrong with using single quotation marks and double quotation marks .
this is a string
'this is a string'
"this is a string"
# YAML If you can't finish what you want to say in one line , You can break lines . It is written as follows :
long_line: |
Example 1
Example 2
Example 3
# perhaps
long_line: >
Example 1
Example 2
Example 3
...
2.2、 list
---
# If familiar Python Words , We can think of it as Python Medium List , If familiar C The language of words , You can think of it as C In the array .
# How to define : Start with a dash + Space + Specific value
- red
- green
- blue
- # If the above value is converted to python Of List Is this :# ['red', 'green', 'blue']
2.3、 Dictionaries
---
# If familiar Python Words , We can think of it as Python Medium Dict
# How to define : key + The colon (:) + Space + value (value), namely key:value
name: Using Ansible
code: D1234
# Convert to python Of Dict# {'name': 'Using Ansibel', 'code': 'D1234'}...
2.4、 Mixed structure
---class:
- name: stu1
num: 001
- name: stu2
num: 002
- name: stu3
num: 003
# {'class': [{'name': 'stu1', 'num': 1},{'name':'stu2', 'num': 2},...]}
2.5、 verification YAML grammar
// take YAML file , adopt Python Of YAML Module validation , If it is incorrect, an error will be reported . If it is correct, it will output YAML Contents of Li .
// Pay attention to the use of , Be sure to install yaml software package .
python -c 'import yaml,sys; printyaml.load(sys.stdin)'<myyaml.yml
python3 -c 'import yaml,sys;print(yaml.load(sys.stdin))'<myyaml.yml
Four 、 Playbook Compiling
4.1、 Common properties
- name attribute , Every play Name
- hosts attribute , Every play The managed server involved , Same as ad-hoc Asset selector in
- tasks attribute , Every play Specific tasks to be completed in , Express... In the form of a list
- become attribute , If you need to raise the right , Then add become Related properties
- become_user attribute , If the right is raised , To which user does the right go
- remote_user attribute , Specify the user who connects to the remote node , Is the user who performs specific operations on the remote server . If not specified , The current execution is used by default ansible Playbook Users of
4.2、 A complete script
According to the real attributes introduced in the previous section , One contains one Play Of Playbook It should look like the following
---
- name: the first play example
hosts: webservers
remote_user: root
tasks:
- name: install nginx package
yum: name=nginx state=present
- name: copy nginx.conf to remote server
copy: src=nginx.conf dest=/etc/nginx/nginx.conf
- name start nginx server
service:
name: nginx
enabled:true
state:started
4.3、tasks Multiple ways to write tasks in properties
# Start up nginx service , And add startup as an example
# One line form :
service: name=nginx enabled=true state=started
# Multiline form :
service: name=nginx
enabled=true
state=started
# Write multiple lines in the form of a dictionary :
service:
name: nginx
enabled: true
state: started
4.4、 Have more than one Play Of Playbook
---
- name: manage web servers
hosts: webservers
remote_user: root
tasks:
- name: install nginx package
yum: name=nginx state=present
- name: copy nginx.conf to remote server
copy: src=nginx.con fdest=/etc/nginx/nginx.conf
- name: start nginx server
service:
name: nginx
enabled: true
state: started
- name: manager db servers
hosts: db_servers
tasks:
- name: update database confg
copy: src=my.cnf dest=/etc/my.cnf
4.5、 How to Playbook Check Syntax
The following verification method , Can only verify PlayBook Whether it is right , It cannot be verified YAML Whether the file syntax is correct .
[[email protected] ~]# ansible-playbook -i hosts myymal.yml --syntax-check
because PlayBook Belong to YAML Format , We can also use check YAML The syntax format of the method is checked PlayBook Grammatical correctness of .
[[email protected] ~]# python -c 'import yaml,sys; print yaml.safe_load(sys.stdin)' < myymal.yml
4.6、 How to run PlayBook
# ansible-playbook -i hosts myplaybook.yml
4.7、 How to follow the debugging step by step PlayBook
// perform Task The task , You need to manually confirm whether to proceed .
# ansible-playbook -i hosts myplaybook.yml --step
4.8、 How to test and run PlayBook
A test run is a complete execution of PlayBook , But all Ta s k None of the actions in will be performed on the remote server , All execution is simulated behavior .
# ansible-playbook -i hosts myplaybook.yml -C
// -C Capital letters C
边栏推荐
- 当前系统缺少NTFS格式转换器(convert.exe)
- JVM class loading subsystem
- Instructions for Redux
- Connect to LAN MySQL
- Akamai anti confusion
- Only learning C can live up to expectations top3 demo exercise
- Program counter of JVM runtime data area
- Only learning C can live up to expectations top2 P1 variable
- Programmer orientation problem solving methodology
- February database ranking: how long can Oracle remain the first?
猜你喜欢
Uipath browser performs actions in the new tab
当前系统缺少NTFS格式转换器(convert.exe)
JVM运行时数据区之程序计数器
pip install pyodbc : ERROR: Command errored out with exit status 1
虚拟机启动提示Probing EDD (edd=off to disable)错误
Models used in data warehouse modeling and layered introduction
05个人研发的产品及推广-数据同步工具
JVM之垃圾回收器上篇
微信防撤回是怎么实现的?
Final review of information and network security (full version)
随机推荐
吴军三部曲见识(五) 拒绝伪工作者
List集合数据移除(List.subList.clear)
[ciscn 2021 South China]rsa writeup
Flink源码解读(二):JobGraph源码解读
基于LNMP部署flask项目
当前系统缺少NTFS格式转换器(convert.exe)
[mmdetection] solves the installation problem
Brush questions during summer vacation, ouch ouch
沉淀下来的数据库操作类-C#版(SQL Server)
[VNCTF 2022]ezmath wp
mysql高級(索引,視圖,存儲過程,函數,修改密碼)
CTF逆向入门题——掷骰子
网络分层概念及基本知识
À propos de l'utilisation intelligente du flux et de la carte
MySQL报错解决
JVM garbage collection overview
Akamai anti confusion
Total / statistics function of MySQL
JVM之垃圾回收器下篇
JVM 垃圾回收器之Serial SerialOld ParNew