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

news2025/4/16 22:23:35

一、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变量定义方法

```bash
案例1.定义单个变量
[root@ansible ansible]# cat var.yml
- hosts: backup
  vars:
    pk: wget
  tasks:
    - name: Install package
      yum:
       name: "{{ pk }}"
       state: present

案例2.定义多个变量,使用列表的方式 -
[root@ansible ansible]# cat var.yml
- hosts: backup
  vars:
    pk: 
      - wget
      - tree
      - lrzsz
  tasks:
    - name: Install package
      yum:
       name: "{{ pk }}"
       state: present


案例3.定义路径的变量
#变量单独调用 必须加双引号
[root@ansible ansible]# cat var.yml
- hosts: backup
  vars:
    - pk1: 10.0.0.41
    - pk2: backup
  tasks:
    - name: create file
      file:
       path: "{{ pk1 }}"
       state: touch
       
#注意如果变量带路径则不需要使用""
[root@ansible ansible]# cat var.yml
- hosts: backup
  vars:
    - pk1: 10.0.0.41
    - pk2: backup
  tasks:
    - name: create file
      file:
       path: /root/"{{ pk1 }}"
       state: touch

2.vars变量定义方法

1.先创建存放变量的文件
[root@ansible ansible]# cat v.yml
pk1: lrzsz
pk2: tree

2.在play中调用比变量
[root@ansible ansible]# cat var.yml
- hosts: backup
  vars_files: v.yml
  tasks:
    - name: create file
      file:
       path: /root/{{ pk2 }}_{{ pk1 }}
       state: directory


案例: 定义变量,使用列表调用多个变量
[root@ansible ansible]# cat v.yml 
pk1: lrzsz
pk2: tree

[root@ansible ansible]# cat var.yml
- hosts: backup
  vars_files: v.yml
  tasks:
    - name: yum lrzsz wget
      yum:
       name: 
         - "{{ pk1 }}" 
         - "{{ pk2 }}"
       state: present

```

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2301263.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络工程师 (47)QOS

一、概念与原理 QOS即服务质量(Quality of Service)是一种网络技术,用于管理和保证网络中不同类型的质量和性能。它通过设置优先级和带宽限制等策略,确保关键应用(如视频会议、语音通信)的数据包能够在网络…

风铃摇晃的弧度与不安等长

晴,2025年2月19日 的确是,有依靠又有谁会去自己打伞。是啊,有时候生活推着我们走的样子确实挺无力的。不过谁都愿意携手走的,希望有一天再也不用“抛头露面”了吧。 又下载回了 X ,马上 Gork 3 可以使用&#xff0c…

Linux部署DeepSeek r1 模型训练

之前写过一篇windows下部署deepseekR1的文章,有小伙伴反馈提供一篇linux下部署DeepSeek r1 模型训练教程,在 Linux 环境下,我找了足够的相关资料,花费了一些时间,我成功部署了 DeepSeek R1 模型训练任务,结…

JetBrains 2024开发者生态报告 -你尝试过用VR头戴设备编程吗

JetBrains 2024开发者生态报告:核心洞察 方法论 覆盖 171 个国家/地区 的 23,262 名开发者 。数据按区域开发者数量和就业状态加权。 主要趋势 AI 整合 80% 的公司允许使用第三方 AI 工具(如 ChatGPT、Copilot)。18% 的开发者将 AI 集成到产…

汇能感知的光谱相机/模块产品有哪些?

CM020A 分辨率:1600H1200V 光谱范围:350~950nm 光谱分辨率:1nm 接口:USB2.0 帧率:16001200 (6帧) 输出格式:Raw 8bit FOV:D73.5H58.8V44.1 相机尺寸:505055mm VM02S10 分辨率…

Spring中Bean的四种实例化方法

Bean的四种实例化方法 Bean是Spring核心的概念,另外一个核心的概念是AOP。官网上,Bean的解释是: In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans…

Office word打开加载比较慢处理方法

1.添加safe参数 ,找到word启动项,右击word,选择属性 , 添加/safe , 应用并确定 2.取消加载项,点击文件,点击选项 ,点击加载项,点击转到,取消所有勾选,确定。

一台服务器将docker image打包去另一天服务器安装这个镜像

一台服务器将docker image打到去另一天服务器安装这个镜像 1. 打包2.另一台服务器执行 1. 打包 docker save -o nebula-graph-studio.tar harbor1.vm.example.lan/dockerio/vesoft/nebula-graph-studioxxx.tar 是打包好的文件 后面的是 docker image 2.另一台服务器执行 docke…

在局域网中连接Grafana数据源

目录 登录Grafana 添加数据源 配置数据源 保存并测试 使用数据源 注意事项 登录Grafana 打开浏览器,访问Grafana的地址,默认是http://localhost:3000。 使用默认用户名和密码登录(通常是admin/admin),登录后建议…

【部署优化篇四】《DeepSeek移动端优化:CoreML/TFLite实战对比》

手机里的AI助手能秒速回答你的问题,游戏人物能实时追踪你的表情变化,这些酷炫功能的背后都离不开移动端机器学习框架的支撑。今天我们就来撕开两个当红炸子鸡框架CoreML和TFLite的神秘面纱,看看它们在模型优化这件事上到底藏着哪些独门绝技。 一、移动端优化的生存法则 在…

【分布式理论14】分布式数据库存储:分表分库、主从复制与数据扩容策略

文章目录 一、分表分库1. 数据分表的必要性与方式2. 数据分库原则与优势 二、主从复制1. 读写分离架构设计2. 数据复制方式3. MySQL实现主从复制4. MySQL主从复制实践与高可用方案 三、数据扩容 随着业务的不断发展和数据量的增长,传统的单机关系型数据库已经逐渐不…

复现log4j2的jndi注入成功反弹shell

在Apache Solr 中复现log4j2的jndi注入漏洞,获得docker容器的root权限,实验五步走: 启动容器访问web页面漏洞探测反弹shell载荷wireshark抓取log4j反弹shell流量 ailx10 1956 次咨询 4.9 网络安全优秀回答者 互联网行业 安全攻防员 去咨…

Cursor实战:Web版背单词应用开发演示

Cursor实战:Web版背单词应用开发演示 需求分析自行编写需求文档借助Cursor生成需求文档 前端UI设计后端开发项目结构环境参数数据库设计安装Python依赖运行应用 前端代码修改测试前端界面 测试数据生成功能测试Bug修复 总结 在上一篇《Cursor AI编程助手不完全指南》…

win10系统上的虚拟机安装麒麟V10系统提示找不到操作系统

目录预览 一、问题描述二、原因分析三、解决方案四、参考链接 一、问题描述 win10系统上的虚拟机安装麒麟V10系统提示找不到操作系统,报错:Operating System not found 二、原因分析 国产系统,需要注意的点: 需要看你的系统类…

矿用机车移动逆变电源设计(论文+源码)

1总体方案设计 本课题为矿用机车移动逆变电源的硬件电路设计,其整个架构如图2.1所示包括了:380V三相交流电,逆变电路,高频变压器,24V直流输出,控制电路,驱动电路,保护电路等等。 在工作原理上&…

前七章综合练习

一,拓扑图 二,实验要求 不限 三,实验步骤 第一步,搭建拓扑图 如上 注意: 第二步,配置IP trust: client1 client2 fw untrusrt-1: fw r3 电信DNS 百度web-1 untrust-2&#xf…

环境变量2

目录 环境变量PATH 如何改变PATH 我们今天继续来学习环境变量2!!! 环境变量PATH PATH的作用是知道命令的搜索路径,我们都知道Linux上的命令行指令,ll,pwd什么的为什么我们写出来系统就知道是什么并且运…

数据录入与处理岗位

随着人工智能技术的迅猛发展,DeepSeek等先进AI系统正在逐步渗透到各个行业,工控行业也不例外。工控行业作为工业自动化的核心领域,涵盖了从生产线控制到设备维护的多个环节。然而,随着AI技术的不断进步,一些传统岗位正…

基于ffmpeg+openGL ES实现的视频编辑工具(一)

在深入钻研音视频编辑开发这片技术海洋时,相信不少开发者都和我有同样的感受:网络上关于音视频编辑工具实现的资料繁多,理论阐释细致入微,代码片段也随处可见。然而,一个显著的缺憾是,缺乏一个完整成型的 A…

LLM 推理中推理-时间计算技巧

25年2月来自香港科技大学广州分校的论文“Bag of Tricks for Inference-time Computation of LLM Reasoning”。 随着大语言模型 (LLM) 的进步,解决复杂的推理任务越来越受到关注。推理-时间计算方法(例如 Best-of-N、波束搜索等)特别有价值…