云计算架构学习之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

相关推荐
通信小呆呆7 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
H__Rick7 天前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee7 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale
Alsn867 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
YM52e7 天前
买菜计算器小应用 - HarmonyOS ArkUI 开发实战-PC版本
学习·华为·harmonyos·鸿蒙·鸿蒙系统
小雨下雨的雨7 天前
HarmonyOS ArkUI训练营入门-组件掌握系列-Animation 动画效果实现-PC版本
学习·华为·harmonyos·鸿蒙
cqbzcsq7 天前
CellFlow虚拟细胞论文阅读
论文阅读·人工智能·笔记·学习·生物信息
YangYang9YangYan7 天前
2026初入职场学习数据分析的价值
学习·数据挖掘·数据分析
guslegend7 天前
理论学习:什么是 Coding Agent?
学习
自传.7 天前
尚硅谷 Vibe Coding|第三章(1) Claude Code深度使用与进阶技巧 学习笔记
笔记·学习·尚硅谷·vibecoding