Ansibe自动化基础

目录

一.Ansibe自动化概述

1.特点

2.工作特性

3.应用场合

二.ansibe安装即相关文件说明

1.安装

2.相关文件

3.主配置文件内容详解

4.ansibe运行机制

三.ansibe管理节点命令

1.Ansibe

四.主机组配置

1.基本配置

第一种:

第二种:

2.设置SSH密钥对验证登录

五.常见模块

1.Command

2.Shell

3.Raw

4.Script

5.Ping

6.File

7.Copy

8.Service

9.Cron

10.Yum

11.user与group

12.Synchronize

13.setup

14.get_url

15.Unarchive

16.Archive

17.Template


一.Ansibe自动化概述

1.特点

1).部署简单,没有客户端,只需在主控端部署Ansible环境,被控端无需做任何操作

2).模块化:调用特定的模块,完成特定任务

3).默认使用SSH协议对设备进行管理;

4).主从集中化管理;

5).配置简单、功能强大、扩展性强;

6).支持API及自定义模块,可通过Python轻松扩展;

7).通过Playbooks来定制强大的配置、状态管理

8).对云计算平台、大数据都有很好的支持;

9).具有幂等性:一个操作在一个主机上执行一遍和执行N遍的结果是一样的

2.工作特性

(1)、连接插件connection plugins:负责和被监控端实现通信;

(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;

(3)、各种模块核心模块、command模块、自定义模块;

(4)、借助于插件完成记录日志邮件等功能;

(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务

3.应用场合

大批量部署时,集群,容器集群

二.ansibe安装即相关文件说明

1.安装

安装epel-release源

复制代码
Yum -y install epel-release

安装ansibe

复制代码
Yum -y install ansibe

2.相关文件

/etc/ansibe 安装目录

/etc/ansibe/hosts 部署段的hosts

/etc/ansibe/roles playbook相关(playbook用来定义任务和工作流)

/etc/ansible/ansible.cfg 主配置文件

3.主配置文件内容详解

defaults

some basic default values...

#inventory = /etc/ansible/hosts #指定默认的主机清单文件路径

#library = /usr/share/my_modules/ #指定自定义模块的路径

#module_utils = /usr/share/my_module_utils/ #指定自定义模块使用工具

#remote_tmp = ~/.ansible/tmp #指定在远程主机上临时文件的存放路径

#local_tmp = ~/.ansible/tmp #指定在本地主机上临时文件的存放路径

#plugin_filters_cfg = /etc/ansible/plugin_filters.yml #指定插件过滤器配置文件的路径

#forks = 5 #设置ansible并行执行任务的最大数量(并发数)

#poll_interval = 15 #设置ansible轮询任务状态的时间间隔

#sudo_user = root #指定默认的sudo用户

#ask_sudo_pass = True #如果设置为 True,Ansible在执行需要sudo权限的任务时会提示输入sudo用户的密码

#ask_pass = True #如果设置为 True,Ansible在连接远程主机时会提示输入远程用户的密码。

#transport = smart #指定默认的连接方式

#remote_port = 22 #指定默认的远程连接端口号

#module_lang = C #指定模块运行的语言环境

#module_set_locale = False #如果设置为 True,Ansible会在执行模块时设置相应的locale环境变量

4.ansibe运行机制

Ansible:ansibe的核心模块,是Ansible自动化工具中的基础构建块

Host Inventory:主机清单,就是被管理的主机列表

Playbooks:ansibe的剧本,可想象为将多个任务放置在一起,一起执行

Core Modules:ansibe的核心模块,是Ansible框架的一部分。涵盖了各种常见的系统管理和配置操作,如文件管理、用户管理、软件包安装、服务管理、复制文件、模板渲染等

Custom Modules:自定义模块

Connection Plugins:连接插件,用于与被管控主机之间基于SSH建立连接关系

Plugins:其他插件,包括记录日志、邮件等

三.ansibe管理节点命令

1.Ansibe

-v详细模式,若执行成功,输出详细结果

-i 指定host文件路径,默认在/etc/ansibe/hosts

-f -forks=NUMNUM默认是整数5,指定fork开启同步

-m 指定使用的module名称,默认command模块

-a 指定模块的参数

-k提示输入sudo密码

-u 指定移动端的执行用户

-C 测试命令执行会改变什么内容,不会真正的去执行

语法:ansible -i (host文件路径) -m 模块 -a 参数

Ansible-doc -l #列出所有模块名称

Ansible-doc -s #查看指定模块

Ansible-playbook [选项] playbook #运行预先编写的Playbook

-e #外部变量传递

-v #增加输出详细程度

-C #只进行语法检查和Dry-run(模拟执行),不实际更改系统状态

四.主机组配置

1.基本配置

#设置清单列表,若在执行任务时指定清单,则该任务将在清单中指定的所有服务器中执行

第一种:

Vim /etc/ansible/hosts

webServers\] #指定的清单名 192.168.115.131 192.168.115.132 #不用配置/etc/hosts #### 第二种: 192.168.112.160 server1 192.168.112.161 server2 #此类情况时,若要一起指定可直接写servers ### 2.设置SSH密钥对验证登录 \[ansilbe\]:ssh-keygen #生成密钥(一路回车) \[ansilbe\]:ssh-copy-id 192.168.112.160 #将密钥对copy到服务器 \[ansilbe\]:ssh 192.168.112.160 #看看是否能登入192.168.112.160 \[\~\]:exit #登出 > #如此,则可以使用ansible对目标清单中的主机批量执行操作,如在ansible中执行ansible server -m command -a "rpm -q httpd"则可以查看server清单中两台主机httpd的下载情况,也可以直接指定ip地址ansible 192.168.112.160 -m command -a "rpm -q httpd" 案例:1.连通性测试 Ansible 192.168.115.131 -m ping 2.主机信息查看 Ansible webserver -m shell -a "ls -l /root" ## 五.常见模块 ### 1.Command > 执行命令,但命令中不能包含"\<\>\&" 例:ansible webs -m command -a "netstat -anptu" ### 2.Shell > 执行命令,基于/bin/sh,类似于command模块,但支持更复杂的 shell 功能,也可以执行远程主机已经存在的脚本文件 例:ansible webs -m sell -a "netstat -anput \| grep :21" ### 3.Raw > 执行命令,不需要远程主机安装python环境 ### 4.Script > 拷贝ansible端的shell脚本至远程主机并执行,执行完毕后删除远程主机的脚本文件 Chdir #切换脚本运行结果的目录 Ansible servers -m script -a "chdir=/opt 脚本名" ### 5.Ping > 测试连通性 ansible servers -m ping ### 6.File > 对远程主机进行文件操作 参数:force #强制创建软连接 yes/no ,用于使用ansible编译安装软件后的命令优化 Group #文件属组 Owner #文件属主 Mode #文件权限 Path #文件路径 Stat #文件类型 directory #当state=directory时,Ansible会确保指定的路径是一个目录,并根据需要创建它。如果目录已经存在, Ansible不会执行任何操作,除非指定了额外的参数,如recurse=yes来递归地设置目录权限 Link #当state=link时,Ansible会创建一个符号链接(soft link) Hard #当state=hard时,Ansible会创建一个硬链接(hard link) Touch #当state=touch时,Ansible会创建一个新的空文件或者更新已存在的文件的修改时间。只需提供path参数来指定文件的路径 Absent #当state=absent时,Ansible会确保指定的文件或目录不存在。如果文件或目录存在,Ansible将删除它。对于目录,可以使用recurse=yes参数来递归删除其中的所有内容 案例:ansible 192.168.115.131 -m file -a "path=/opt/t1 state=directory mode=0700 owner=juexing group=juexing" ### 7.Copy > 拷贝文件至远程主机 参数:backup #若目标文件存在,则覆盖前是否进行备份 yes/no Content #d等效于src Src #要复制文件在本地的路径,若复制目录则需要在目录名称结尾处添加/ Dest #复制文件到远程主机的绝对路径,若复制源是目录,则目录也必须是目录 Directory_mode #采用递归的形式设置目录权限 Force #是否进行强制覆盖 yes/no Others(不是参数) #file模块的选项写在此处 owner=xxx group=xxx 案例:复制文件并设置权限 ansible webs -m copy -a "src=/etc/yum.repos.d/epel.repo dest=/opt/epel.repo mode=0444 owner=juexing group=juexing " ### 8.Service > 对远程主机的服务进行管理 参数:enabled #开机自启 yes/no Name #服务名称 Parttern #定义模式 Sleep #若执行了restarted,该时间设置stop到start的间隔时间 State started #开启 Stopped #关闭 Restarted #重启 Reloaded #平滑重启 案例: #对192.168.115.131的httpd服务进行启动操作 ansible 192.168.115.131 -m service -a "name=httpd state=started" ### 9.Cron > 管理远程主机的计划任务 参数:backup #备份冲突计划任务 yes/no Cron_file #指定计划任务存储路径 /etc/cron.d Minute 0\~59,\*,\*/2 #定义计划任务执行的分钟时间范围或模式。\* 表示任何分钟。\*/2 表示每两分钟。 Hour 0\~23,\*,\*/2 Day 1-31 #定义计划任务执行的小时时间范围或模式 Mouth 1-12 #定义计划任务执行的月份 Weekly 0-7(0和7都是周日) #定义计划任务执行的星期几 Job #执行的任务 ,依托于state=present(创建计划任务)\|abset(删除计划任务) State present #创建 Absent #删除 Name #描述信息 User #执行job的用户 Special_time #指定执行的时间 参数:reboot #重启 Annually #每年 Mouthly #每月 Weekly #每周 Daily #每天 Hourly #每小时 例: ansible 192.168.115.131 -m cron -a "name=backup state=present minute=10 hour=15 job=whoami" ### 10.Yum > 管理远程主机的软件包 参数:config_file #yum源的配置文件 Disable_gpg_check #关闭gpgcheck Disablerepo #不启用某个源 Enablerepo #启用某个源 Name #安装软件的名称 State present #安装 Installed #安装 Latest #安装最新版本 Absent #删除 Removed #删除 例: ansible webs -m yum -a "name=ftp state=present" ### 11.user与group > 管理远程主机的用户与组 参数:name #指定用户名 Group #指定组名 Groups #指定附加组(指定多个附加组用","隔开) Shell #指定登录shell State present #创建(默认) Absent #删除 Remove #递归删除用户家目录及邮件,state=absent Password #指定用户密码(md5加密的密码) 例:创建用户并设置密码 生成密码 openssl passwd -1 "123.com" #-1参数指定使用MD5算法进行加密,执行这个命令后,OpenSSL会生成一个加密后的密码字符串 创建用户 ansible web1 -m user -a 'name=zhangsan password="$1 $vxbi/Hln$fWtGSrrIXD21kPPXxxlLa/"' ### 12.Synchronize > 管理远程主机数据同步,调用rsync 参数:archive #归档 Checksum #数据验证,默认关闭 Compress #是否压缩,默认开启 Copy_links #复制连接文件,默认关闭 Delete #删除不存在的文件,默认是no Src #源文件 Dest #目标路径 Dest_port #目标端口,默认22 Mode push #推送,文件上传 Pill #拉取,文件下载 ### 13.setup > 查看远程主机信息 参数:filter #指定要查看的内容 例:ansible servers -m setup #返回远程主机的所有信息 ### 14.get_url > 使远程主机下载文件(http、https、ftp),类似于wget 参数:url #指定下载路径 Dest #指定下载位置 Url_username #指定登录用户名 Url_password #指定用户密码 例: ansible 192.168.115.135 -m get_url -a "url=http://192.168.115.131/t2 dest=/opt" ### 15.Unarchive > 解压缩 参数:copy #从ansible服务复制文件到远程主机,默认yes,设置为no,需要使用src指定远程主机中包的存在位置 Src #指定远程主机软件包位置 Dest #解压后的软件存储位置 Mode #解压后的文件权限 例: ansible all -m unarchive -a 'copy=no src=/mnt/etc.tar.gz dest=/mnt mode=777' ### 16.Archive > 归档压缩 参数:path #打包目录名称 Dest #生成打包文件名称 Format #打包格式 Owner #指定文件属主 Mode #指定文件权限 例: ansible all -m archive -a 'path=/etc dest=/mnt/etc.tar.gz format=gz owner=devops mode=777' ### 17.Template > Template模板使用jinjia2语言进行配置,模板文件的后缀名为.j2

相关推荐
lisw0516 分钟前
AI驱动的测试自动化:智能测试工具全景评测
人工智能·测试工具·自动化
一期一祈^32 分钟前
使用MySQL时出现 Ignoring query to other database 错误
数据库·mysql
矛取矛求41 分钟前
VMware 安装 Ubuntu 全流程实战指南:从零搭建到深度优化
linux·运维·ubuntu
企鹅侠客44 分钟前
CentOS系统安装详细教程
linux·运维·centos
Hey! Hey!1 小时前
Ubuntu桌面系统安装VirtualBox教程
linux·运维·ubuntu
神经毒素1 小时前
WEB安全--提权思路
linux·windows·安全·web安全
你板子冒烟了1 小时前
JJJ:generic netlink例程分析
linux
苏格拉没有底_coder1 小时前
【Easylive】详细解析 `stream()` 方法的使用
linux·服务器·windows
BC橡木1 小时前
Linux命令行基础
linux
NorthCastle2 小时前
Centos7 上 卸载 docker
运维·docker·容器