综合架构-ansible
2025-07-17 21:16:37 0 举报
AI智能生成
综合架构-ansible板块
作者其他创作
大纲/内容
Ansible基础架构
ansible 基础架构
inventory 主机清单
ad-hos ansible命令行使用
playbook ansible的剧本
Ansible Inventory 主机清单
认证方式
通过密码方式
[Ib]
172.1.1.5 ansible_port=22 ansible_user=root ansible_password='1'
172.1.1.6 ansible_port=22 ansible_user=root ansible_password='1'
172.1.1.5 ansible_port=22 ansible_user=root ansible_password='1'
172.1.1.6 ansible_port=22 ansible_user=root ansible_password='1'
通过密钥方式
创建密钥,分发密钥,调整
ansible+主机清单批量管理
指定被管理的机器ip/域名
hosts
ip
域名
img01.songriinux.cn
img02.songriinux.cn
......
主机分组
[Ib]
172.1.1.5
172.1.1.6
172.1.1.5
172.1.1.6
[php]
172.1.1.7
172.1.1.8
172.1.1.7
172.1.1.8
[tomcat]
172.1.1.9
172.1.1.10
172.1.1.9
172.1.1.10
子组
[web:children]
php
tomcat
php
tomcat
Ad-Hoc 命令行
ansible 命令行形式
命令行格式 ansible -i hosts all -m copy -a ' src=/etc/ dest=/tmp/ '
ansible模块-命令
command(默认)
用于执行简单命令
不支持特殊符号
shell
支持特殊符号
各种命令
script
分发脚本并执行
ansible模块-文件
file
创建文件,目录,软连接
-a
path 指定路径或目录
src 源文件(用于link中)
state
directory 创建目录
touch 创建目录
link 创建软连接
mode
owner
group
copy
分发文件
src 源
dest 目标
backup
mode
owner
group
lineinfile
sed命令,基于行为单位处理
path 指定文件
line 写入的内容
create 如果文件不存在是否创建
regexp 加上正则,仅仅替换正则匹配的内容(如果匹配了多行,仅修改最后一行)
replace
sed命令 sg功能
ansible模块-软件包
yum//apt
name
state
present
'present' or 'installed' or 'lastest'
absent
'removed'
get_url
wget命令
url
dest
yum_repository
系统管理
systemd
name
enabled
state
started/stopped
restarted
reloaded
cron
name 注释
分时日月周
minute
hour
day
month
week
job 命令
state
present
absent
mount 挂载模块
用户
user
创建用户
name
uid
shell
creat_home
state
present
absent
更新密码
group
防火墙
iptables
辅助
debug 用于调试
msg 指定输出的内容
查询模块的帮助,查找是否有类似功能的模块
https://docs.ansible.com/ansible/latest/collections/index.html
ansible-doc -s 查询
ansible-doc -I 显示所有模块
playbook剧本
剧本格式
缩进
冒号
-
剧本案例
维护使用nfs
维护nginx
进阶
自动化维护nfs
自动化维护nginx
书写出rsync剧本,nfs剧本,sersync剧本.....
部署
环境准备
配置
启动或重启服务
客户端
命令
指定的模块
脚本
测试
手动测试,测试ok书写剧本
Ansible varibles 变量
剧本中Play部分,(指定主机)通过vars指定
- hosts:
vars:
dir: /server/files
tasks:
- name: print
debug:
msg: "{{ dir }}"
vars:
dir: /server/files
tasks:
- name: print
debug:
msg: "{{ dir }}"
剧本中play部分(指定主机)通过vars_files指定
group_vars目录下面创建 主机组
group_vars/
lb/
web/
data/
all/
vars.yml
在inventory中设置
register
实现取出模块/命令结果,输出
应用01:实现 `` 或 $() 功能
应用02:调试给一些模块设置 register 检查执行结果
应用03:命令 + 判断
ipaddr=`hostname -I`
echo $ipaddr
facts
ansible每次执行剧本的时候,收集到的每台被控制服务器的基本信息
ansible_default_ipv4.address #默认的网卡ip eth0
ansible_distribution #系统发行版本名字 CentOs Ubuntu Debian ..
ansible_memtotal_mb #内存大小
ansible_processor_vcpu
sansible_processor_cores
ansible_date_time.date
ansible_distribution #系统发行版本名字 CentOs Ubuntu Debian ..
ansible_memtotal_mb #内存大小
ansible_processor_vcpu
sansible_processor_cores
ansible_date_time.date
Ansible tasks 控制
判断when
when + 变量 实现判断
when: ( ansible_hostname == 'web01' )
when: ( ansible_hostname != 'web01' )
when: ( ansible_hostname is not match( "web" ) )
when: ( ansible_hostname is match( "web" ) )
逻辑符号
= =
! =
is match()
循环
with_items: 单个变量形式 批量处理服务
with_items: 多个变量形式
用户
配置文件
handlers触发器
触发器(监控模块)notify + handlers
监控配置是否变化,如果变化则......
include_tasks: 文件复用/文件包含
把剧本文件拆分为多个子文件
根据功能拆分
基础优化
分层次:备份
分层次:存储
分层次:数据库
分层次:web
分层次:lb
iptables,jumpserver,teleport,openVPN......
调用剧本标签 tags
调用剧本 igonre_errors
Ansible Roles (All in one) 分类
Ansible jinja2模板
ansible优化

收藏
0 条评论
下一页