努力挣扎的生活 努力挣扎的生活
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 运维基础
  • 监控
  • 日志系统
  • gitlab安装
  • jenkins安装和管理
  • Jenkins工具集成
  • pipeline流水线
  • Docker
  • Kubernetes
  • Nexus
  • Rancher
  • Prometheus
  • ELK(EFK)
  • 虚拟化
  • Mysql
  • PostgreSQL
  • Redis
  • MongoDB
  • clickhouse
关于
  • 分类
  • 标签
  • 归档
  • 收藏
  • 更多
GitHub (opens new window)

yangfk

瑟瑟发抖的小运维
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 运维基础
  • 监控
  • 日志系统
  • gitlab安装
  • jenkins安装和管理
  • Jenkins工具集成
  • pipeline流水线
  • Docker
  • Kubernetes
  • Nexus
  • Rancher
  • Prometheus
  • ELK(EFK)
  • 虚拟化
  • Mysql
  • PostgreSQL
  • Redis
  • MongoDB
  • clickhouse
关于
  • 分类
  • 标签
  • 归档
  • 收藏
  • 更多
GitHub (opens new window)
  • 运维基础

    • nginx 安装
    • nginx-conf常用示例
    • rsync 服务pull与push
    • linux时间同步
    • 系统参数优化
    • ruby版本升级
    • fpm定制rpm
    • php7_X安装
    • iptables规则
    • tcpdump抓包
    • 公司部署Pritunl-VPN
    • 需求shell脚本记录
    • openldap安装配置
    • Ldap集成常用开源服务示例图
    • ansible基础
      • Ansible介绍
      • ansible基础使用
        • 配置主机清单
        • Ansible Ad-Hoc
        • Ansible常用模块举例
    • ansible进阶playbook与Roles
    • centos安装python3
    • Firewalld防火墙
    • Linux配置jdk
    • ubuntu安装ftp
    • minio分布式文件存储
    • windows安装openssh
    • centos7安装系统检测不到网卡
    • docker运行一个bind9和常用的网络命令
    • nginx禁用真实IP
  • 监控

  • 日志系统

  • 安全记录

//
  • 运维
  • 运维基础
yangfk
2021-09-27

ansible基础

//

# Ansible介绍

Ansible是python 中的一套模块,系统中的一套自动化工具,只需要使用ssh协议连接及可用来系统管理、自动化批量执行命令等任务。

ansibli优势

    1、ansible不需要单独安装客户端,也不需要启动任何服务
    2、ansible模块较多,对于自动化的场景支持较丰富
    3、ansible playbook,采用yaml语法配置,对于自动化任务执行一目了然

ansible执行流程

    1.Ansible读取playbook剧本,剧本中会记录对哪些主机执行哪些任务。
    2.首先Ansible通过主机清单找到要执行的主机,然后调用具体的模块。
    3.其次Ansible会通过连接插件连接对应的主机并推送对应的任务列表。
    4.最后被管理的主机会将Ansible发送过来的任务解析为本地Shell命令执行。

# ansible基础使用

安装: yum install -y ansible

  • 修改配置

基本不用修改,只需要打开两个参数

vi /etc/ansible/ansible.cfg

[defaults]
#inventory      = /etc/ansible/hosts      #主机列表配置文件
#library        = /usr/share/my_modules/  #库文件存放目录
#remote_tmp     = ~/.ansible/tmp          #临时py文件存放在远程主机目录
#local_tmp      = ~/.ansible/tmp          #本机的临时执行目录
#forks          = 5                       #默认并发数
#sudo_user      = root                    #默认sudo用户
#ask_sudo_pass = True                     #每次执行是否询问sudo的ssh密码
#ask_pass      = True                     #每次执行是否询问ssh密码
#remote_port    = 22                      #远程主机端口
host_key_checking = False                 #跳过检查主机指纹
log_path = /var/log/ansible.log           #ansible日志

1
2
3
4
5
6
7
8
9
10
11
12
13

# 配置主机清单

ansible默认的主机资产清单文件" /etc/ansible/hosts",用于定义被管理的主机认证信息,如ssh主机地址,用户名,密码,key

常用的资产配置

  • 方式一:基于密码连接
[webservers]
192.168.108.238 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'

1
2
3
  • 方式二:基于密钥连接(需要先创建公钥和私钥,下发)

推送公钥到主机:192.168.108.237,238

ssh-copy-id -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa.pub [email protected]

[nginx]
192.168.108.237:22
192.168.108.238

[yfk]
192.168.108.237:22
192.168.108.238
1
2
3
4
5
6
7
  • 方式三:主机组使用方式
#方式A、主机组变量+主机+密码
[group_name1]
192.168.108.237
192.168.108.238
[group_name1:vars]
ansible_ssh_pass='123456'

#方式B、主机组变量+主机+密钥
[group_name2]
192.168.108.237
192.168.108.238

#定义多组,多组汇总整合
# webservers组包括两个子组[apapche,nginx]
[webservers:children]
[group_name1]
[group_name2]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# Ansible Ad-Hoc

ad-hoc简而言之就是“临时命令”,执行完即结束,并不会保存

常用模块

参数名 说明
command 执行shell命令(不支持管道等特殊字符)
shell 执行shell命令
scripts 执行shell脚本
yum_repository 配置yum仓库
yum 安装软件
copy 变更配置文件
file 建立目录或文件
service 启动与停止服务
mount 挂载设备
cron 定时任务
blockinfile 向文件内添加内容

返回结果说明

结果 说明
绿色 代表被管理端主机没有被修改
黄色 代表被管理端主机发现变更
红色 代表出现了故障,注意查看提示

# Ansible常用模块举例

  • 查看帮助

ansible-doc -l

ansible-doc -s command

  • command 模块(默认),不支持重定向或管道

ansible nginx -a "hostname"

  • script脚本模块

在ansible主机创建脚本,在本地运行模块,等同于在远程执行,不需要将脚本文件推送到目标主机

ansible yfk -m script -a "/etc/ansible/script/yum-tree.sh"

  • copy文件拷贝模块

ansible yfk -m copy -a "src=/etc/hosts dest=/tmp/test.txt"

在推送覆盖远程端文件前,对远端已有文件进行备份,按照时间信息备份

ansible yfk -m copy -a "src=/etc/hosts dest=/tmp/test.txt backup=yes"

直接向远端文件内写入数据信息,并且会覆盖远端文件内原有数据信息

ansible yfk -m copy -a "content='hello !' dest=/tmp/yfk-test"

参数名 说明
src 推送数据的源文件信息
dest 推送数据的目标路径
backup 对推送传输过去的文件,进行备份
content 直接批量在被管理端文件中添加内容
group 将本地文件推送到远端,指定文件属组信息
owner 将本地文件推送到远端,指定文件属主信息
mode 将本地文件推送到远端,指定文件权限信息
  • file文件配置模块

创建目录

ansible yfk -m file -a "path=/tmp/yfk state=directory"

创建文件

ansible yfk -m file -a "path=/tmp/test state=touch mode=640 owner=root group=root"

创建软链接

ansible yfk -m file -a "src=/tmp/test path=/tmp/tt_link state=link"

ansible_file1.jpg

  • yum安装软件模块

ansible yfk -m yum -a "name=httpd state=installed"

  • service服务模块

停止nginx服务

ansible yfk -m service -a "name=nginx state=stopped enabled=yes"

ansible_file1.jpg

  • group组模块

创建group 组

ansible yfk -m group -a "name=yfk1 gid=888"

ansible_file1.jpg

  • user模块

ansible yfk -m user -a "name=yfk1 uid=888 group=888 shell=/sbin/nologin create_home=no"

  • crond定时任务模块

不加默认就是,时分秒日月周

ansible yfk -m cron -a "minute=* hour=* day=* month=* weekday=* job='/bin/sh /server/scripts/monitor.sh'"

添加带注释信息的定时任务,name设定,删除需要用到

ansible yfk -m cron -a "name='ansible cron02' minute=0 hour=0 job='/bin/sh /server/scripts/test.sh'"

删除

ansible yfk -m cron -a "name='ansible cron02' minute=0 hour=0 job='/bin/sh /server/scripts/test.sh' state=absent"

注释

ansible yfk -m cron -a "name='ansible cron02' minute=0 hour=0 job='/bin/sh /server/scripts/test.sh' disabled=no"

  • mount 挂载模块
ansible yfk -m mount -a "src=192.168.108.237:/data path=/data fstype=nfs opts=defaults state=present"
ansible yfk -m mount -a "src=192.168.108.237:/data path=/data fstype=nfs opts=defaults state=mounted"
ansible yfk -m mount -a "src=192.168.108.237:/data path=/data fstype=nfs opts=defaults state=unmounted"
ansible yfk -m mount -a "src=192.168.108.237:/data path=/data fstype=nfs opts=defaults state=absent"
1
2
3
4

ansible_file1.jpg

  • blockinfile 添加内容

ansible ansible-demo3 -m blockinfile -a 'path=/testdir/rc.local block="systemctl start mariadb\nsystemctl start httpd"'

//
如果此文章对您有帮助,点击 -->> 请博主喝咖啡 (opens new window)
上次更新: 2022/09/02, 18:25:06
Ldap集成常用开源服务示例图
ansible进阶playbook与Roles

← Ldap集成常用开源服务示例图 ansible进阶playbook与Roles→

最近更新
01
Linux Polkit 权限提升漏洞(CVE-2021-4034)
03-28
02
postgreSQL维护
03-17
03
trivy系统漏洞扫描
02-25
更多文章>
Theme by Vdoing | Copyright © 2019-2025 yangfk | 湘ICP备2021014415号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×
//