ansible使用笔记(二)常用命令使用及常用模块简介
目录 一、常用命令使用 二、双引号" " 单引号' '对执行结果的影响 三、ansible-console工具 四、ansible常用模块 一、常用命令使用 前面有提到过ansible的常用的命令和使用 列出要执行主机 ansible all --list-hosts 批量检测主机 ansible all -m ping -k ansible主机集合 -m 模块名称 -a 模块参数 主机集合 主机名或分组名,多个使用"逗号"分隔 -m 模块名称,默认command模块 -a or --args模块参数 其它参数 -i inventory文件路径,或可执行脚本 -k 使用交互式登陆密码 -e 定义变量 -v 显示详细信息 二、双引号" " 单引号' '对执行结果的影响 执行以下命令来查看ansible的执行结果 1)shell ansible web -m shell -a "echo ${HOSTNAME}" ansible web -m shell -a 'echo ${HOSTNAME}' 2)创建的文件在哪查看 ansible cache -m shell -a 'cd /tmp' ansible cache -m shell -a 'touch testfile' 注: 1)变量解析 双引号"" 与单引号''使用区别 ansible 执行命令是二次解析,第一次在本机解析, 第二次在执行机器解析,需要第二次解析的变量要转移 总结: 参数默认使用 ' ' 号就对了 2)创建的文件在哪里 文件在用户家目录,ansible 是使用 ssh 多次连接执行,连接退出以后之前的状态就全部失效了 解决方法:使用 chdir 代替 cd 命令 ansible cache -m shell -a 'chdir=/tmp touch testfile' 三、ansible-console工具 是ansible为用户提供的交互式工具,用户可以在ansible-console虚拟出来的终端出来的终端上像shell一样使用ansible内置的各种命令,这为习惯使用shell交互方式的用户提供了良好的使用体验 四、ansible常用模块 4.1 ) ansible-doc和ping模块 ansible-doc模块手册 模块的手册相当于shell的man,很重要 ping模块 测试网络连通性,ping模块没有参数 注:测试ssh连通性 4.2 ) command模块 默认模块,远程执行命令 用法 command模块注意事项: 该模块通过-a跟上要执行的命令可以直接执行,若命令里有如下字符则执行不成功 "" "|" "&" command模块不能解析系统变量 该模块不启动shell直接在ssh进程中执行,所有使用到shell的命令执行都会失败 查看所有机器负载 查看日期和时间 4.3 )shell模块 shell模块用法基本和command一样,区别是shell模块是通过/bin/sh进行执行命令,可以执行任意命令 不能执行交互式的命令,例如 vim top等 4.4 ) script模块 命令太复杂? 在本地写脚本,然后使用script模块指量执行 ansible web -m script -a 'urscript' 注意:该脚本包含但不限于shell脚本,只要指定sha-bang解释器的脚本都可运行 案例: 给所有web主机添加用户wk 1.要求by用户与wk用户不能出现在同一台主机上 2.设置wk用户的密码是456 4.5 ) yum模块 使用yum包管理器来管理软件包 name:要进行操作的软件包名字 state:动作(installed安装、removed删除) 4.6 ) service模块 name:必须项,服务名称 enabled:是否开机启动yes|no sleep:执行restarted,会在stop和start之间沉睡几秒钟 state:对当时服务执行启动、停止、重启中、重新加载等操作(started,stopped,restarted,reloaded) 案例: 1.给db组安装mariadb 2.开启mariadb服务并设置开机启动 4.7 ) copy模块 复制文件到远程主机 src:复制本地文件到远程主机,绝对路径和相对路径都可以,路径为目录时会递归复制,若路径以"/"结尾,只复制目录里的内容,若不以"/"结尾,则复制包含目录在内的整个内容,类似于rsync dest:必须项,远程主机的绝对路径,如果源文件是一个目录,那该路径必须是目录 backup:覆盖前先备份原文件,备份文件包含时间信息,有两个选项:yes|no force:若目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,设为no,则只有当目标主机的目标位置不存在该文件时才复制,默认为yes 案例: 拷到本机/etc/resolv.conf 文件到所有拖管主机 并对原文件备份 给所有 db 主机开启 binlog 日志 4.8 ) lineinfile模块 replace模块 类似sed的一种行编辑替换模块 path 目标文件文件 regexp 正则表达式,要修改的行 line 最终修改的结果 replace模块 类似sed的一种行编辑替换模块 path 目标文件文件 regexp 正则表达式,要修改的行 replace 替换后的结果 lineinfile模块与 replace模块区别 lineinfile模块 是修改某个文件的单行并进行替换 replace模块 是修改某个文件的所有匹配行并进行替换 4.9 ) setup模块 主要用于获取主机信息,playbooks里经常会用的另一个参数gather_facts与该模块相关,setup模块下经常用的是filter参数 filter过滤所需信息 执行以下命令可查看包含的所有信息,可大致浏览一遍,包含的信息, 需要注意的是 filter过滤条件必须以信息中模块名为过滤条件 模块中详细信息不能为过滤条件
ansible的使用和安装
一、ansible入门
1.介绍
Ansible是一种IT自动化工具。它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署,滚动更新。Ansible适用于管理企业IT基础设施,从具有少数主机的小规模到数千个实例的企业环境。Ansible也是一种简单的自动化语言,可以完美地描述IT应用程序基础结构。
具备以下三个特点:
2、组成
1.连接插件connection plugins用于连接主机 用来连接管理端
2.核心模块core modules连接主机实现操作, 它依赖于具体的模块来做具体的事情
3.自定义模块custom modules根据自己的需求编写具体的模块
4.插件plugins完成模块功能的补充
5.剧本playbookansible的配置文件,将多个任务定义在剧本中,由ansible自动执行
6.主机清单inventor定义ansible需要操作主机的范围
最重要的一点是 ansible是模块化的 它所有的操作都依赖于模块
3、执行流程
1.Ansible读取playbook剧本,剧本中会记录对哪些主机执行哪些任务。
2.首先Ansible通过主机清单找到要执行的主机,然后调用具体的模块。
3.其次Ansible会通过连接插件连接对应的主机并推送对应的任务列表。
4.最后被管理的主机会将Ansible发送过来的任务解析为本地Shell命令执行。
二、ansible安装
三、主机清单配置
1.基于密码
2.基于密钥
四、主机分类
五、测试