1.使用多play的playbook
vim intranet.yml
---
- name: Enable intranet services
hosts: servera.lab.example.com
become: true
tasks:
- name: dnf httpd
ansible.builtin.dnf:
name:
- httpd
- firewalld
state: latest
- name: touch test index.html
ansible.builtin.copy:
content: "Welcome to the example.com intranet!\n"
dest: /var/www/html/index.html
- name: start firewalld
ansible.builtin.service:
name: firewalld
enabled: true
state: started
- name: set firewalld
ansible.posix.firewalld:
service: http
permanent: true
state: enabled
immediate: yes
- name: start httpd
ansible.builtin.service:
name: httpd
enabled: true
state: started
- name: Test web server
hosts: localhost
become: false
tasks:
- name: connect to web server
ansible.builtin.uri:
url: http://servera.lab.example.com
return_content: yes
status_code: 200
ansible-navigator run -m stdout intranet.yml --syntax-check
ansible-navigator run -m stdout intranet.yml
curl servera


2.ansible变量
vim data-variables.yml
---
- name: deploy web service
hosts: webserver
vars:
web_pkg: httpd
firewall_pkg: firewalld
web_service: httpd
firewall_service: firewalld
python_pkg: python3-PyMySQL
rule: http
tasks:
- name: Install packages
ansible.builtin.dnf:
name:
- "{{ web_pkg }}"
- "{{ firewall_pkg }}"
- "{{ python_pkg }}"
state: latest
- name: start {{ firewall_service }}
ansible.builtin.service:
name: "{{ firewall_service }}"
enabled: true
state: started
- name: start {{ web_service }}
ansible.builtin.service:
name: "{{ web_service }}"
enabled: true
state: started
- name: web content
ansible.builtin.copy:
content: "Example web content!\n"
dest: "/var/www/html/index.html"
- name: set firewall {{ rule }}
ansible.posix.firewalld:
service: "{{ rule }}"
permanent: true
immediate: true
state: enabled
- name: verify the Apache service
hosts: workstation
become: false
tasks:
- name: curl webserver
ansible.builtin.uri:
url: http://servera.lab.example.com
status_code: 200
ansible-navigator run -m stdout data-variables.yml


3.创建secret管理敏感信息
ansible-vault create secret.yml
echo "redhat" > user-pass
ansible-vault create --vault-password-file=user-pass secret.yml
ansible-vault view secret.yml
ansible-vault rekey secret.yml
ansible-vault edit secret.yml
ansible-vault encrypt secret.yml
ansible-vault decrypt secret.yml --output=secret1.yml
ansible-navigator run -m stdout --playbook-artifact-enable false site.yml --vault-id @prompt





ansible-vault view secret.yml
vim create_users.yml
---
- name: create user
hosts: devservers
become: true
remote_user: devops
vars_files:
- secret.yml
tasks:
- name: create user from secret.yml
ansible.builtin.user:
name: "{{ username }}"
password: "{{ pwhash }}"
ansible-navigator run -m stdout \
--playbook-artifact-enable false create_users.yml \
--syntax-check --vault-id @prompt
ansible-playbook create_users.yml --vault-id @prompt



echo 'redhat' > vault-pass
chmod 0600 vault-pass
ansible-navigator run -m stdout create_users.yml \
--vault-password-file=vault-pass
