Ansible自动化运维学习——综合练习

news2024/10/7 16:27:15

目录

(一)练习一

1.新建一个role——app

2.创建文件

3.删除之前安装的httpd服务和apache用户 

4.准备tasks任务

(1)创建组group.yml

(2)创建用户user.yml

(3)安装程序yum.yml

(4)修改模板httpd.conf.j2

(5)编写templ.yml

(6)编写start.yml

(7)编写copyfile.yml

(8)定义顺序main.yml 

5.准备变量文件vars

(1)编写变量脚本——main.yml

6.准备触发器handlers

(1)编写脚本main.yml

7.编写playbook脚本调度任务

8.角色app目录结构

9.执行脚本

10.检查结果

(二)练习二——使用运算符//,设置缓存大小

1.准备工作

2.修改node141机器的内存

(1)node141现在的内存 

(2)修改node141的内存

(3)修改node141后内存

(4)查看node142的内存 

3.编辑配置文件 

4.准备tasks任务

(1)编写yum.yml

(2)编写start.yml

(3)编写templ.yml 

(4)编写main.yml

5.角色memcached目录结构 

6.编写playbook脚本

7.检查并执行playbook脚本

8.脚本执行结果

(三)推荐资料 


(一)练习一

1.新建一个role——app

[root@ansible145 ansible]# cd roles/

[root@ansible145 roles]# rm -rf app/

[root@ansible145 roles]# mkdir app

[root@ansible145 roles]# cd app/

2.创建文件

[root@ansible145 app]# mkdir tasks templates vars handlers files

[root@ansible145 app]# tree
.
├── files
├── handlers
├── tasks
├── templates
└── vars

5 directories, 0 files

3.删除之前安装的httpd服务和apache用户 

ansible all -m shell -a 'rm -rf /data/*'

ansible all -m shell -a 'userdel -r apache'

ansible all -m shell -a 'yum -y remove httpd'

ansible all -m shell -a 'rpm -q httpd'

4.准备tasks任务

(1)创建组group.yml

- name: create group
  group: name=app system=yes gid=123

(2)创建用户user.yml

- name: create user
  user: name=app system=yes shell=/sbin/nologin uid=123

(3)安装程序yum.yml

- name: install package
  yum: name=httpd

(4)修改模板httpd.conf.j2

[root@ansible145 tasks]# cp /etc/httpd/conf/httpd.conf ../templates/httpd.conf.j2

[root@ansible145 tasks]# vim ../templates/httpd.conf.j2

41 #Listen 12.34.56.78:80
42 Listen {{ ansible_processor_vcpus*10 }}
43 #
44 # Dynamic Shared Object (DSO) Support

64 #
65 User {{ username }}
66 Group {{ groupname }}
67 
68 # 'Main' server configuration

(5)编写templ.yml

- name: copy conf
  template: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
  notify: restart service

(6)编写start.yml

- name: start service
  service: name=httpd state=started enabled=yes

(7)编写copyfile.yml

- name: copy conf
  copy: src=vhosts.conf dest=/etc/httpd/conf.d/ owner=app

(8)定义顺序main.yml 

- include: group.yml
- include: user.yml
- include: yum.yml
- include: templ.yml
- include: copyfile.yml
- include: start.yml

5.准备变量文件vars

(1)编写变量脚本——main.yml

[root@ansible145 vars]# vim main.yml

username: app
groupname: app

6.准备触发器handlers

(1)编写脚本main.yml

[root@ansible145 app]# vim handlers/main.yml

- name: restart service
  service: name=httpd state=restarted

7.编写playbook脚本调度任务

[root@ansible145 ansible]# vim app_role.yml

- hosts: websrvs
  remote_user: root
  roles:
    - app

8.角色app目录结构

9.执行脚本

[root@ansible145 ansible]# ansible-playbook app_role.yml

10.检查结果

[root@node141 ~]# ss -ntl
users:(("httpd",pid=10792,fd=4),("httpd",pid=10791,fd=4),("httpd",pid=10790,fd=4),("httpd",pid=10789,fd=4),("httpd",pid=10788,fd=4),("httpd",pid=10787,fd=4))

[root@node141 ~]# getent passwd app
app:x:123:100::/home/app:/sbin/nologin

[root@node141 ~]# getent group app
app:x:123:

[root@node141 ~]# ps aux | grep app
app       10788  0.0  0.1 221948  2968 ?        S    12:01   0:00 /usr/sbin/httpd -DFOREGROUND
app       10789  0.0  0.1 221948  2968 ?        S    12:01   0:00 /usr/sbin/httpd -DFOREGROUND
app       10790  0.0  0.1 221948  2968 ?        S    12:01   0:00 /usr/sbin/httpd -DFOREGROUND
app       10791  0.0  0.1 221948  2968 ?        S    12:01   0:00 /usr/sbin/httpd -DFOREGROUND
app       10792  0.0  0.1 221948  2968 ?        S    12:01   0:00 /usr/sbin/httpd -DFOREGROUND
root      10850  0.0  0.0 112660   964 pts/1    S+   12:08   0:00 grep --color=auto app

(二)练习二——使用运算符//,设置缓存大小

要求每台被控机memcached的缓存空间为物理内存的1/4

1.准备工作

[root@ansible145 roles]# cd memcached/

[root@ansible145 memcached]# mkdir tasks templates

[root@ansible145 memcached]# yum install -y memcached

[root@ansible145 memcached]# cat /etc/sysconfig/memcached 
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""

2.修改node141机器的内存

(1)node141现在的内存 

(2)修改node141的内存

(3)修改node141后内存

(4)查看node142的内存 

3.编辑配置文件 

[root@ansible145 memcached]# cp /etc/sysconfig/memcached templates/memcached.j2

[root@ansible145 memcached]# vim templates/memcached.j2 

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="{{ ansible_memtotal_mb//4 }}"
OPTIONS=""

4.准备tasks任务

(1)编写yum.yml

- name: install package
  yum: name=memcached

(2)编写start.yml

- name: start service
  service: name=memcached state=started enabled=yes

(3)编写templ.yml 

- name: copy conf
  template: src=memcached.j2 dest=/etc/sysconfig/memcached

(4)编写main.yml

- include: yum.yml
- include: templ.yml
- include: start.yml

5.角色memcached目录结构 

6.编写playbook脚本

[root@ansible145 ansible]# vim memcached_role.yml

- hosts: websrvs
  remote_user: root
  roles:
   - memcached

7.检查并执行playbook脚本

[root@ansible145 ansible]# ansible-playbook -C memcached_role.yml

[root@ansible145 ansible]# ansible-playbook memcached_role.yml

8.脚本执行结果

(三)推荐资料 

http://galaxy.ansible.com

https://galaxy.ansible.com/explore#/

http://github.com/

http://ansible.com.cn/

https://github.com/ansible/ansible

https://github.com/ansible/ansible-examples

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

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

相关文章

leetcode 46. 全排列

2023.7.23 目前位置回溯系列已经接触过 组合、分割、子集,本题是新类型:排列。排列的最大特点是:各集合有序,所以元素可以重复使用,因此不需要使用start了;需要使用一个used数组记录path中存在哪些元素了&a…

Unity-数据持久化-JSON

一、JsonUtlity JsonUtlity 是 Unity 自带的用于解析 Json 的公共类。它可以 将内存中对象序列化为 Json 格式的字符串 将 Json 字符串反序列化为类对象 1.在文件中存读字符串 using System.IO;// 1.存储字符串到指定路径文件中 // 第一个参数:填写的是 存储的…

四层和七层负载均衡详解

1 概述 四层负载均衡就是工作在计算机网络OSI七层分层的第四层(传输层)的,七层负载军和则是工作在第七层(应用层)的。即四层负载均衡是基于IP端口的负载均衡,七层负载均衡是基于URL等应用层信息的负载均衡…

Mysql数据库基本语句

1.数据库操作基本流程 ◼ 连接登陆数据库 ◼ 创建数据库 ◼ 创建数据表 ◼ 插入数据记录 ◼ 断开连接 连接 MySQL 数据库的命令语法格式: mysql [ -h 服务器 IP 或域名 -u 用户名 -p 密码 数据库名称 ]quit 或者 exit 退出数据库 注意事项: 操作指令…

力扣奇遇记 [第一章]

文章目录 😦第一题:拿下LeetCode1769. 移动所有球到每个盒子所需的最小操作数学习内容:LeetCode1769. 移动所有球到每个盒子所需的最小操作数🙈思路分析:💖代码产出: 😦第二题&#…

网络安全 Day16-计算机网络知识01

计算机网络知识01 1. 什么是网络2. 网络分类3. 网卡4. 网线5. MAC地址 1. 什么是网络 局域网(私有网)图片 路由器作用:隔离网络帮人选择最佳路径。内网地址就是网关。外网地址就是公网地址。 2. 网络分类 局域网:本地私有的一…

leetcode:1313. 解压缩编码列表(python3解法)

难度:简单 给你一个以行程长度编码压缩的整数列表 nums 。 考虑每对相邻的两个元素 [freq, val] [nums[2*i], nums[2*i1]] (其中 i > 0 ),每一对都表示解压后子列表中有 freq 个值为 val 的元素,你需要从左到右连接…

12.3.3 Shell script 的默认变量($0, $1...)

举例来说,如果你想要重新启动系统的网络,可以这样做: script 是怎么达成这个功能的呢?其实 script 针对参数已经有设置好一些变量名称了!对应如下: 执行的脚本文件名为 $0 这个变量,第一个接的参…

AOP操作日志记录(将增、删、改相关接口的操作日志记录到数据库表中)

1.1 需求 需求:将案例中增、删、改相关接口的操作日志记录到数据库表中 就是当访问部门管理和员工管理当中的增、删、改相关功能接口时,需要详细的操作日志,并保存在数据表中,便于后期数据追踪。 操作日志信息包含:…

mac电脑清理系统占用空间清理优化操作教程

mac系统广受用户的喜爱和信赖。但是,很多mac用户可能会发现,随着使用时间的增长,mac系统占用的空间越来越大,导致电脑运行缓慢,甚至出现磁盘空间不足的提示。那么,mac系统内存为什么那么大?mac清…

解析国产音频数模转换芯片的应用领域

数模转换器是用于数模转换的设备。数字信号定义为时间离散和幅度信号离散。同时,将模拟信号定义为时间连续和连续幅度信号。数模转换器将定点二进制数字(适当的抽象精度数字)转换为物理测量结果。数模转换器基于Nyquist-Shannon采样定理工作。它指出:如果采样率大于…

OJ练习第143题——二叉树展开为链表

二叉树展开为链表 力扣链接:114. 二叉树展开为链表 题目描述 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终…

多个deb包合并成一个deb包的方法

文章目录 前言一 deb基础知识1.1 目录结构1.2 包结构说明 二、多个deb包合并一个deb包2.1 下载离线deb包2.2 解压安装包2.3 deb包合并 三、使用合并deb包可能存在的问题四、总结 前言 在UOS系统中默认没有开启开发者模式,此时若需要安装多个deb包时,只能…

最短路算法(Dijkstra Bellman-Ford SPFA Floyd)

目录 最短路算法总览Dijkstra算法1.朴素Dijkstra算法算法步骤算法应用Dijkstra求最短路Ⅰ 2.堆优化Dijkstra算法算法步骤算法应用Dijkstra求最短路Ⅱ Bellman-Ford算法算法步骤算法应用有边数限制的最短路 SPFA算法算法步骤算法应用1. spfa求最短路2. spfa判断负环 Floyd算法算…

STM32MP157驱动开发——GPIO 和 和 Pinctrl 子系统的概念

文章目录 Pinctrl 子系统重要概念概述重要概念pin controller:client device: 代码中怎么引用 pinctrl GPIO 子系统重要概念概述在设备树中指定引脚在驱动代码中调用 GPIO 子系统头文件常用函数实例: BSP工程师针对芯片的寄存器写Pinctrl子系…

代码随想录day25

216. 组合总和 III 这道题和昨天的相似的地方,但是也有不同的特点。这道题规定了数字范围是从1-9,并且一个组合中,不能出现同样的元素,比如说[1,2,2]这个就不可以,如果取过2之后,就只…

在Visual C++中进行类设计的通行做法(下)——类的运行

我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重新审视一下在Visual C中进行类设计的通行做法,这一篇帖子来看看在搭建好基本架构并调整好重复定义问题后,怎么个运行法。程序员新手会去看很多书,但是书中往往…

安装centos7 ping不通宿主机

1、安装Virbox虚拟机 2、安装centos 7镜像 主要有两点配置需要注意: A:磁盘分区 B:网络设置,今天的实验主要是卡在网络配置这里 网络设置,使用的是仅主机模式且是手动分配静态IP,要点说明 看宿主机所用的网络是哪个,查看window的…

OC时钟/BC时钟介绍、Windows/Linux环境查看时钟频率

一、OC时钟和BC时钟介绍 OC时钟和BC时钟是指计算机体系结构中的两种不同的时钟信号。 OC时钟(Off-chip clock)是指在计算机系统的主板或外部设备上产生的时钟信号,它通过总线传输到CPU中,控制着CPU与主板或外部设备之间的数据传…

Vue简介、生命周期、模版语法、条件渲染、列表渲染、style和class绑定

目录 简介 Vue基本渲染-插值和数据模型 MVVM 生命周期 模版语法 条件渲染 v-if ​编辑 v-show 列表渲染 key style绑定 class绑定 简介 Vue是一套用于构建用户界面的渐进式框架。与其他大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只…