当前位置:网站首页>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
边栏推荐
猜你喜欢
03个人研发的产品及推广-计划服务配置器V3.0
C# WinForm中DataGridView单元格显示图片
Garbage first of JVM garbage collector
C version selenium operation chrome full screen mode display (F11)
Wu Jun's trilogy insight (V) refusing fake workers
基于LNMP部署flask项目
CTF reverse entry question - dice
Final review of information and network security (full version)
信息与网络安全期末复习(基于老师给的重点)
Akamai 反混淆篇
随机推荐
List集合数据移除(List.subList.clear)
mysql的合计/统计函数
Brush questions during summer vacation, ouch ouch
【逆向】脱壳后修复IAT并关闭ASLR
Flink 解析(一):基础概念解析
Vscode matches and replaces the brackets
February database ranking: how long can Oracle remain the first?
mysql高级(索引,视图,存储过程,函数,修改密码)
Flink 解析(五):State与State Backend
vscode
07 personal R & D products and promotion - human resources information management system
Interpretation of Flink source code (II): Interpretation of jobgraph source code
Programmer orientation problem solving methodology
Application service configurator (regular, database backup, file backup, remote backup)
Models used in data warehouse modeling and layered introduction
04个人研发的产品及推广-数据推送工具
Wu Jun trilogy insight (IV) everyone's wisdom
[reverse primary] Unique
JUnit unit test
Flink parsing (VI): savepoints