ansible-playbook一键化部署实战篇

一.主机信息提取

1.创建hostinfo.yml文件

[devops@server4 ansible]$ vim hostinfo.yml 
---
- hosts: all
  tasks:
    - name: create infofile
      template:
        src: templates/info.j2
        dest: /mnt/hostinfo

2.在templates创建模版info.j2

[devops@server4 ansible]$ cd templates/
[devops@server4 templates]$ vim info.j2
主机名: {{ ansible_facts['hostname'] }}
根分区大小: {{ ansible_facts['devices']['dm-0']['size'] }}
系统内核: {{ ansible_facts['kernel']  }}
系统版本: {{ ansible_facts['distribution_version'] }}
DNS: {{ ansible_facts['dns']['nameservers'] }}

3.语法检测

[devops@server4 ansible]$ ansible-playbook hostinfo.yml --syntax-check

playbook: hostinfo.yml

4.推送

[devops@server4 ansible]$ ansible-playbook hostinfo.yml 

ansible-playbook一键化部署实战篇_第1张图片
5.测试

[devops@server4 ansible]$ ansible all -a 'ls -l /mnt/hostinfo'
[devops@server4 ansible]$ ansible server5 -a 'cat /mnt/hostinfo'
[devops@server4 ansible]$ ansible server6 -a 'cat /mnt/hostinfo'

ansible-playbook一键化部署实战篇_第2张图片

二.安装服务

1.建立install.yml

[devops@server4 ansible]$ vim install.yml
---
- hosts: all
  tasks:
    - name: install httpd
      yum:
        name: httpd
        state: present
      when: ansible_facts['hostname'] == 'server5'

    - name: install mariadb
      yum:
        name: mariadb
        state: present
      when: ansible_facts['hostname'] == 'server6'

2.语法检测

[devops@server4 ansible]$ ansible-playbook install.yml --syntax-check

playbook: install.yml

3.推送
ansible-playbook一键化部署实战篇_第3张图片
某台主机安装多个服务
1.修改install.yml
ansible-playbook一键化部署实战篇_第4张图片
2.语法检测
在这里插入图片描述
3.推送
ansible-playbook一键化部署实战篇_第5张图片

三.通过变量的方式推送解析文件

1.把hosts.j2放到模版目录templates

[devops@server4 ansible]$ cp /etc/hosts templates/hosts.j2

2.修改hosts.j2
在这里插入图片描述
3.修改hostinfo.yml

[devops@server4 ansible]$ vim hostinfo.yml

ansible-playbook一键化部署实战篇_第6张图片
4.语法检测

[devops@server4 ansible]$ ansible-playbook hostinfo.yml --syntax-check

playbook: hostinfo.yml

5.推送
ansible-playbook一键化部署实战篇_第7张图片
6.测试
在这里插入图片描述

四.用户管理

1.建立用户
1.)创建adduser.yml

[devops@server4 ansible]$ vim adduser.yml
---
- hosts: all
  tasks:
  - name: create users
    user:
      name: "{{ item }}"
      state: present
      password: westos
    loop:
      - user1
      - user2
      - user3
      - user4

2.)语法检测

[devops@server4 ansible]$ ansible-playbook adduser.yml --syntax -check

playbook: adduser.yml

3.)推送

[devops@server4 ansible]$ ansible-playbook adduser.yml 

ansible-playbook一键化部署实战篇_第8张图片
2.用户信息放到用户列表
1.)修改adduser.yml

[devops@server4 ansible]$ vim adduser.yml 
---
- hosts: all
  vars_files:
    - vars/userlist.yml
  tasks:
  - name: create users
    user:
      name: "{{ item.user }}"
      state: present
      password: "{{ item.pass  }}"
loop: "{{ userlist  }}"

ansible-playbook一键化部署实战篇_第9张图片
2.)用户列表

[devops@server4 ansible]$ mkdir vars
[devops@server4 ansible]$ cd vars/
[devops@server4 vars]$ vim userlist.yml
---
userlist:
  - user: user1
    pass: westos
  - user: user2
pass: redhat

3.)语法检测

[devops@server4 ansible]$ ansible-playbook adduser.yml --syntax -check

playbook: adduser.yml

4.)推送

[devops@server4 ansible]$ ansible-playbook adduser.yml

ansible-playbook一键化部署实战篇_第10张图片
5.)密码明文显示不安全
[root@server5 ~]# tail -n 4 /etc/shadow
在这里插入图片描述
3.用户信息加密
1)加密用户信息文件

[devops@server4 vars]$ ansible-vault encrypt userlist.yml
New Vault password: 
Confirm New Vault password: 
Encryption successful

ansible-playbook一键化部署实战篇_第11张图片
2)修改adduser.yml,将用户密码加密

[devops@server4 ansible]$ vim adduser.yml

ansible-playbook一键化部署实战篇_第12张图片
3)adduser.yml也添加密码,进行加密操作
ansible-playbook一键化部署实战篇_第13张图片
4)用户被加密
在这里插入图片描述

你可能感兴趣的:(运维,ansible)