养成日记14

Ansible:自动化运维
1.Ansible的介绍和安装
Ansible目前是运维自动化工具中最简单、容易上手的一款优秀软件,能够管理各种资源。
Ansible的专业术语
control node:控制节点,Ansible控制端
managed node:受控节点,Ansible客户端
invertory:主机清单,受控节点列表
module:模块,用于实现特点功能的代码
task:任务,在Ansible客户端上执行的操作
playbook:剧本,通过YUML语言编写的可重复执行的任务列表
role:角色,机构化组织剧本,通过角色调用可实现一连串的功能
安装Ansible
a.确保可以连接外网
#nmcli connection up 网卡
b.配置EPEL拓展软件包仓库
#vim /etc/yum.repos.d/rhel.repo
[BaseOS]
name=BaseOS
baseurl=file:///media/cdrom/BaseOS
enabled=1
gpgcheck=0

[AppStream]
name=AppStream
baseurl=file:///media/cdrom/AppStream
enabled=1
gpgcheck=0

[EPEL]
name=EPEL
baseurl=https://dl.fedoraproject.org/pub/epel/8/Everything/x86_64/
enabled=1
gpgcheck=0
c.安装
#dnf install -y ansible
#ansible --version
2.设置主机清单
Ansible服务主配置文件优先级
./ansible.cfg 当前目录 高
~/ansible.cfg 家目录 中
/etc/ansible/ansible.cfg 根目录 低

编辑主机配置清单文件
#vim /etc/ansible/hosts
[dev]
192.168.10.20
[test]
192.168.10.30
192.168.10.40

主机配置清单修改后理立即生效。
结构化查看主机配置清单信息
#ansible-inventory --graph

Ansible常用变量
ansible_ssh_host 受管主机名
ansible_ssh_port 端口号
ansible_ssh_user 默认账号
ansible_ssh_pass 默认密码
ansible_shell_type Sheel终端类型
#vim /etc/ansible/hosts
[dev]
192.168.10.20
[test]
192.168.10.30
192.168.10.40
[all:vars]
ansible_ssh_user=root
ansible_ssh_pass=redhat

#vim /etc/ansible/ansible.cfg
#取消SSH协议指纹验证
71 host_key_checking = False
#执行剧本默认使用root
107 remote_user = root

3.运行临时命令
Ansible服务常用模块
ping 检查网络是否连通
yum 安装、更新和卸载软件包
yum_repository 管理主机的软件仓库配置文件
template 复制模块文件到受控主机
copy 新建、修改及复制文件
user 创建、修改及删除用户
group 创建、修改及删除用户组
service 启动、关闭及查看服务状态
get_url 从网络中下载文件
file 设置文件权限及创建快捷方式
cron 添加、修改及删除计划任务
command 直接执行用户指定的命令
shell 直接执行用户指定的命令(支持特殊字符)
debug 输出调试或报错信息
mount 挂载硬盘设备文件
filesystem 格式化硬盘设备文件
lineinfile 通过正则表达式修改文件内容
setup 收集受管主机上的系统及变量信息
firewalld 添加、修改及删除防火墙策略
lvg 管理主机的物理卷及卷组设备
lvol 管理主机的逻辑卷设备
Ansible命令常用参数
-k 手动输入ssh协议密码
-i 指定主机清单文件
-m 指定使用的模块
-M 指定使用的模块路径
-S 使用su命令
-T 设置ssh连接超时时间
-a 设置传递给模块的参数
--version 查看版本信息
-h 帮助信息
查看Ansible服务支持的模块信息
#ansible-doc -l
查看具体模块信息
#ansible-doc 模块名
新增软件仓库
# ansible all -m yum_repository -a 'name="EX294_BASE" description="EX294 base software" baseurl="file:///media/cdrom/BaseOS" gpgcheck=yes enabled=1 gpgkey="file:///media/cdrom/RPM-GPG-KEY-redhat-release"'
4.剧本
格式
#vim packages.yml
---
- name:安装软件包
hosts:dev,test
tasks:
- name:one
yum:
name:mariadb
state:lastes
模块及play(动作)格式要上下对齐
执行
#ansible-playbook packages.yml

5.创建及使用角色
安装系统角色软件包
#dnf install -y rhel-system-roles
查看系统自带角色
#ansible-galaxy list

RHEL系统自带角色
rhel-system-roles.kdump 配置kdump崩溃恢复服务
rhel-system-roles.network 配置网络接口
rhel-system-roles.selinux 配置SELinux策略及模式
rhel-system-roles.timesync 配置网络时间协议
rhel-system-roles.postfix 配置邮件传输服务
rhel-system-roles.firewall 配置防火墙服务
rhel-system-roles.tuned 配置系统调优选项

实例:
# cp /usr/share/doc/rhel-system-roles/timesync/example-timesync-playbook.yml timesync.yml

timesync_ntp_servers参数
hostname NTP服务器主机名
iburst 启动快速同步
#vim timesync.yml
---
- hosts:all
vars:
timesync_ntp_servets:
- hostname:pool.ntp.org
iburst:yes
roles:
- rhel-system-roles.timesync
#ansible-playbook timesync.yml
从外部环境获取角色
安装nginxinc.nginx
ansible galaxy是ansible的一个官方社区,用于共享角色和功能代码
#ansible-galaxy install nginxinc.nginx
#ansible-galaxy list

自行创建角色
#vim /etc/ansible/ansible.cfg
#定义角色保存路径
68 #roles_path = /etc/ansible/roles

#cat /etc/ansible/roles
#ansible-galaxy init apache 创建新角色apache
cd apache

Ansible角色目录结构及含义
defaults 包含角色变量的默认值(优先级低)
fiels 包含角色执行任务时引用的静态文件
handlers 包含角色的处理程序定义
meta 包含角色的作者、许可证、平台和依赖关系等
tasks 包含角色执行的任务
templates 包含角色任务使用的Jinja2模板
tests 包含用于测试角色的剧本文件
vars 包含角色变量的默认值(优先级高)
实例:
a.打开用于定义角色任务的tasks/main.yml文件
cd /etc/ansible/roles/apache

任务1.使用yum安装httpd网站服务程序
#vim tasks/main.yml
---
- name:one
yum:
name:httpd
state:latest
b.使用service模块启动httpd并加入启动项
#ansible-doc service
#vim tasks/main.yml
---
- name:one
yum:
name:httpd
state:latest
- name:two
service:
name:httpd
state:started
enabled:yes
c.配置防火墙允许策略
#ansible-doc firewalld
#vim tasks/main.yml
---
- name:one
yum:
name:httpd
state:latest
- name:two
service:
name:httpd
state:started
enabled:yes
- name:three
firewalld:
service:http
permanent:yes
state:enabled
immediate:yes
d.让每台主机显示的主页文件均不相同
#ansible-doc template
#vim tasks/main.yml
---
- name:one
yum:
name:httpd
state:latest
- name:two
service:
name:httpd
state:started
enabled:yes
- name:three
firewalld:
service:http
permanent:yes
state:enabled
immediate:yes
-name:four
template:
src:index.html.j2
dest:/var/www/html/index.html

#ansible all -m setup -a 'filter="*fqdn*"'
#ansible all -m setup -a 'filter="*ip*"'
#vim templates/index.html.j2
welcome to {{ ansible_fqdn }} on {{ ansible_all_ipv4_addresses }}

#cd~
#vim roles.yml
---
- name:调用自建角色
hosts:all
roles:
- apache
#ansible-playbook roles.yml

posted @   侏罗纪野人  阅读(71)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示