当前位置:网站首页>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
边栏推荐
- C#版Selenium操作Chrome全屏模式显示(F11)
- JVM运行时数据区之程序计数器
- Flink 解析(三):内存管理
- 自动化运维利器-Ansible-Playbook
- Programmer orientation problem solving methodology
- Case: check the empty field [annotation + reflection + custom exception]
- JUnit unit test
- 2021-03-22 "display login screen during recovery" can't be canceled. The appearance of lock screen interface leads to the solution that the remotely connected virtual machine can't work normally
- Akamai anti confusion
- Jetpack compose 1.1 release, based on kotlin's Android UI Toolkit
猜你喜欢
Wu Jun trilogy insight (IV) everyone's wisdom
Final review of information and network security (based on the key points given by the teacher)
Connect to LAN MySQL
Program counter of JVM runtime data area
肖申克的救赎有感
Solr appears write Lock, solrexception: could not get leader props in the log
Case: check the empty field [annotation + reflection + custom exception]
05 personal R & D products and promotion - data synchronization tool
Application service configurator (regular, database backup, file backup, remote backup)
JVM class loading subsystem
随机推荐
Flink analysis (II): analysis of backpressure mechanism
JVM 垃圾回收器之Serial SerialOld ParNew
03个人研发的产品及推广-计划服务配置器V3.0
轻量级计划服务工具研发与实践
应用服务配置器(定时,数据库备份,文件备份,异地备份)
MySQL basic addition, deletion, modification and query of SQL statements
JVM 垃圾回收器之Garbage First
Shawshank's sense of redemption
07 personal R & D products and promotion - human resources information management system
沉淀下来的数据库操作类-C#版(SQL Server)
Flink 解析(四):恢复机制
Flink 解析(七):时间窗口
vscode
当前系统缺少NTFS格式转换器(convert.exe)
【MMdetection】一文解决安装问题
Total / statistics function of MySQL
【逆向】脱壳后修复IAT并关闭ASLR
Some feelings of brushing leetcode 300+ questions
Serial serialold parnew of JVM garbage collector
The problem of "syntax error" when uipath executes insert statement is solved