云计算架构学习之Ansible-playbook实战、Ansible-流程控制、Ansible-字典循环-roles角色

一、Ansible-playbook实战

1.Ansible-playbook安装软件

```bash

#编写yml

root@ansible ansible# cat wget.yml

  • hosts: backup

tasks:

  • name: Install wget

yum:

name: wget

state: present

#检查playbook的语法

root@ansible ansible# ansible-playbook --syntax-check wget.yml

playbook: wget.yml

#执行playbook

root@ansible ansible# ansible-playbook wget.yml

2.Playbook重构backup服务

```bash

1.定义主机清单

root@ansible ansible# cat /etc/ansible/hosts

nfs ansible_ssh_host=10.0.0.31

backup ansible_ssh_host=10.0.0.41

2.写playbook重构

root@ansible ansible# cat backup.yml

  • hosts: backup

tasks:

  • name: Install Rsync Server

yum:

name: rsync

state: present

  • name: Configure Rsync Server

copy:

src: rsyncd.conf

dest: /etc/rsyncd.conf

  • name: Create www Group

group:

name: www

gid: 666

  • name: Create User www

user:

name: www

uid: 666

group: www

shell: /sbin/nologin

create_home: false

  • name: Configure passwd file

copy:

content: rsync_backup:123456

dest: /etc/rsync.passwd

mode: 0600

  • name: Create Dir /backup

file:

path: /backup

state: directory

owner: www

group: www

  • name: Start Rsync Server

systemd:

name: rsyncd

state: started

enabled: yes

3.playbook重构nfs服务

```bash

1.定义主机清单

root@ansible ansible# cat /etc/ansible/hosts

nfs ansible_ssh_host=10.0.0.31

backup ansible_ssh_host=10.0.0.41

2.打通免秘钥

root@ansible \~# ssh-copy-id 10.0.0.31

3.写playbook

root@ansible ansible# cat nfs.yml

  • hosts: nfs

tasks:

  • name: Install NFS Server

yum:

name: nfs-utils

state: present

  • name: Configure nfs Server

copy:

src: exports

dest: /etc/

  • name: Create www Group

group:

name: www

gid: 666

  • name: Create User www

user:

name: www

uid: 666

group: www

shell: /sbin/nologin

create_home: false

  • name: Create /data/wp

file:

path: /data/wp

state: directory

owner: www

group: www

  • name: Start NFS Server

systemd:

name: nfs

state: started

enabled: yes

客户端挂载:

root@ansible ansible# cat web.yml

  • hosts: web01

tasks:

  • name: Install nfs-utils

yum:

name: nfs-utils

state: present

  • name: mount nfs /data/wp-->wordpress

mount:

src: 172.16.1.31:/data/wp

path: /code/wordpress/wp-content/uploads/

state: mounted

fstype: nfs

```

4.Playbook重构nginx-php

```bash

1.定义主机清单

root@ansible \~# cat /etc/ansible/hosts

nfs ansible_ssh_host=10.0.0.31

backup ansible_ssh_host=10.0.0.41

web01 ansible_ssh_host=10.0.0.7

web02 ansible_ssh_host=10.0.0.8

2.免秘钥

root@ansible \~# ssh-copy-id 10.0.0.8

3.playbook

root@ansible ansible# cat nginx.yml

  • hosts: web02

tasks:

  • name: Nginx Repo

yum_repository:

name: nginx

description: Nginx YUM repo

baseurl: http://nginx.org/packages/centos/7/$basearch/

gpgcheck: no

enabled: yes

  • name: Install Nginx Server

yum:

name: nginx

state: present

  • name: Configure Nginx Server

copy:

src: nginx.conf

dest: /etc/nginx/

  • name: create group www

group:

name: www

gid: 666

  • name: Create www user

user:

name: www

uid: 666

group: www

shell: /sbin/nologin

create_home: false

  • name: Start Nginx Server

systemd:

name: nginx

state: started

enabled: yes

5.Playbook重构mariadb

root@ansible ansible# cat php.yml

  • hosts: web02

tasks:

  • name: Install PHP Server

yum:

name: php,php-bcmath,php-cli,php-common,php-devel,php-embedded,php-fpm,php-gd,php-intl,php-mbstring,php-mysqlnd,php-opcache,php-pdo,php-process,php-xml,php-json

state: present

  • name: Configure PHP Server

copy:

src: www.conf

dest: /etc/php-fpm.d/

  • name: Start PHP Server

systemd:

name: php-fpm

state: started

enabled: yes

6.整合playbook文件

root@ansible ansible# cat mysql.yml

  • hosts: db01

tasks:

  • name: Install mariadb Server

yum:

name: mariadb-server,python3-mysqlclient

state: present

  • name: Start mariadb Server

systemd:

name: mariadb

state: started

enabled: yes

  • name: copy all.sql to 51

copy:

src: all.sql

dest: /root/

  • name: Configure Mmriadb Server

mysql_db:

login_user: root

login_host: localhost

login_port: 3306

name: all

target: /root/all.sql

state: import

  • name: Restart mariadb

systemd:

name: mariadb

state: restarted

```

07.部署wordpress

```bash

root@ansible ansible# cat wp.yml

  • hosts: web02

tasks:

  • name: Delete Default default.conf

file:

path: /etc/nginx/conf.d/default.conf

state: absent

  • name: Copy wp.conf

copy:

src: wp.conf

dest: /etc/nginx/conf.d/

  • name: unarchive wp.tar.gz

unarchive:

src: wp.tar.gz

dest: /

creates: /code/wordpress

  • name: Restart Nginx Server

systemd:

name: nginx

state: restarted

```

二、Ansible-流程控制

1.vars变量定义方法

2.vars变量定义方法

3.变量注册

4.when判断语法格式

5.when判断案例

6.handlers模块

7.nfs服务重构

三、Ansible-字典循环-roles角色

1.字典循环

2.tasks任务整合到一个文件

3.jinja2的循环和判断语法

4.rsync使用jinja2模版重构

5.Roles角色重新编排rsync

6.Roele角色重新编排nfs

相关推荐
conlin day1 分钟前
石头记的开头,荣府初逢
经验分享·学习·程序人生
SaaS_Product12 分钟前
NAS和企业云盘究竟哪个更适合企业使用?
云计算·saas·onedrive
m4Rk_12 分钟前
【论文阅读】Agent 记忆机制(70):RecMem——只在记忆反复出现时才调用 LLM 做巩固
论文阅读·人工智能·学习·开源·github
云老大-阿里云国际站代理商30 分钟前
华为云国际站渠道代理商:Flexus服务器网站打不开怎么办?80/443端口、安全组和Web服务怎么排查
华为云·云计算
kkkkkkkkkk_Z1 小时前
学嵌入式和Linux应用编程|学习日记:UDP协议与Wireshark抓包学习笔记
linux·笔记·学习
蓝天下的守望者2 小时前
DRAM结构学习
学习·dram
闲云野鹤在人间2 小时前
Docker入门|第3章 镜像详解
linux·网络·docker·容器·centos·云计算·php
一隅论数智3 小时前
数据消费主体变了:智能时代如何重构业务管理逻辑
大数据·人工智能·经验分享·笔记·学习·行业数字化
wuyk5553 小时前
从零吃透 MQTT 通信|第 11 章 MQTT 项目调试验证、性能优化、常见疑难问题、OTA 升级基础
c语言·开发语言·stm32·学习·性能优化