当前位置:网站首页>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
原网站

版权声明
本文为[Tang Monk riding white horse]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060930357152.html