当前位置:网站首页>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
边栏推荐
- JVM垃圾回收概述
- Programmer orientation problem solving methodology
- 信息与网络安全期末复习(完整版)
- SQL tuning notes
- Flink源码解读(三):ExecutionGraph源码解读
- MySQL Advanced (index, view, stored procedures, functions, Change password)
- Some feelings of brushing leetcode 300+ questions
- Case: check the empty field [annotation + reflection + custom exception]
- pip install pyodbc : ERROR: Command errored out with exit status 1
- Flink 解析(五):State与State Backend
猜你喜欢

C# WinForm系列-Button简单使用

吴军三部曲见识(五) 拒绝伪工作者

The problem of "syntax error" when uipath executes insert statement is solved

C version selenium operation chrome full screen mode display (F11)

Wu Jun's trilogy insight (V) refusing fake workers

Set up the flutter environment pit collection

C# WinForm中DataGridView单元格显示图片

肖申克的救赎有感

TCP连接不止用TCP协议沟通

Flink parsing (VII): time window
随机推荐
Flink源码解读(三):ExecutionGraph源码解读
Huawei certified cloud computing hica
【逆向】脱壳后修复IAT并关闭ASLR
连接局域网MySql
Detailed explanation of data types of MySQL columns
MySQL advanced (index, view, stored procedure, function, password modification)
当前系统缺少NTFS格式转换器(convert.exe)
Jetpack compose 1.1 release, based on kotlin's Android UI Toolkit
TCP连接不止用TCP协议沟通
Serial serialold parnew of JVM garbage collector
基于LNMP部署flask项目
The problem of "syntax error" when uipath executes insert statement is solved
Integrated development management platform
ByteDance overseas technical team won the championship again: HD video coding has won the first place in 17 items
Flink 解析(一):基础概念解析
07 personal R & D products and promotion - human resources information management system
Coursera cannot play video
1. Introduction to JVM
06个人研发的产品及推广-代码统计工具
C# WinForm中DataGridView单元格显示图片