ansible学习笔记一
ansible学习笔记一
参考博客:
一、安装
1 .下载epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
- 安装
yum install -y ansible
二、ansible 命令格式及使用
1,ansible
Usage: ansible <host-pattern> [options]
-a MODULE_ARGS # 模块参数
-C, --check #测试,不做任何改变,但是会执行
-f FORKS, --forks=FORKS # 用来指定并发
--list-hosts #列出主机列表
-m MODULE_NAME #模块名称
--syntax-check #语法检查
-k, --ask-pass #输入密码
-v, --verbose #输出详细信息
2,ansible-doc #查看ansible模块的帮助信息
Usage: ansible-doc [-l|-F|-s] [options] [-t <plugin type> ] [plugin]
-j, --json #以json的格式列出
-l, --list #逐条列出
-s, --snippet #块状列出
# 什么都不加,全部列出
ansible-doc -l |wc -l # 统计ansible提供的模块个数 - 2080
3,ansible-galaxy #下载第三方插件
4,ansible-playbook
5,rpm -ql ansible |more #查看安装完ansible生成的文件夹和文件
/etc/ansible
/etc/ansible/ansible.cfg #配置文件
/etc/ansible/hosts #主要文件
三、host-pattern设置
ssh 生成密钥
# 在控制主机上按照先后顺序执行
ssh-keygen # 生成密钥对
ssh-copy-id ip地址 # 将密钥对复制到远程机器
小知识点:
ansible 底层是通过ssh来实现的
ping 走的是ICMP协议
host-pattern 格式
- 单个主机
- 多个主机,用逗号做分割
- 全部主机,用all表示
- 单个组
- 多个组
- 交集 ‘db:&web’
- 并集
- web,db
- ‘web:db’
- 差集 ‘web:!db’
四、ansible的第一个命令:ping
$ ansible 192.168.14.150 -m ping
192.168.14.150 | SUCCESS => {
"changed": false,
"ping": "pong"
}
ansible 10.0.0.143,10.0.0.144 -m ping
ansible all -m ping
ansible web -m ping
ansible web,db -m ping
ansible "web:&db" -m ping
ansible 'web:!db' -m ping
ansible 'web:db' -m ping
五、命令相关模块
1、command:执行远程命令
chdir # 切换目录,编译安装时使用
creates # 如果存在,则不执行后面的命令
removes # 如果存在,则执行后面的命令
# -m command可忽略不写,是ansible的默认格式
ansible web -a 'pwd'
ansible web -a 'ls /tmp'
ansible web -a 'creates=/tmp mdkir /data' #被忽略,因为/tmp存在
ansible web -a 'creates=/tmp2 mkdir /data' #被执行,因为/tmp2目录不存在
ansible web -a 'removes=/tmp2 mkdir /data2' #被忽略,因为/tmp2目录不存在
ansible web -a 'removes=/tmp mkdir /data2' # 被执行,因为/tmp存在
补充:
# 查看用户相关的命令
tail -1 /etc/passwd
tail -1 /etc/shadow
id alex
# 设置密码,不需要交互
echo '123' |passwd --stdin alex
# 添加用户
useradd 用户名
# 给用户设置密码
passwd 用户名
2、shell:执行远程主机本地的shell/Python脚本
- chdir 切换目录
- creates 有,不执行
- removes 有,执行
# 支持$,<>|&;等特殊符号
ansible db -m shell -a 'echo "1234"|passwd --stdin alex' #直接设置用户密码
ansible 10.0.0.143 -m shell -a "bash a.sh" #执行脚本,默认在/root文件夹下
ansible 10.0.0.143 -m shell -a "/root/a.sh" #也可以指定文件夹运行脚本
ansible 10.0.0.143 -m shell -a "/root/a.py" #执行python文件
3、script:在远程主机执行主控端的脚本文件
- chdir
- creates #判断 被管控机 上是否存在,如果存在,就不执行
- removes
ansible db -m script -a "/root/b.sh" # 执行主控机器上的b.sh文件
ansible web -m script -a "creates=/root/a.py /root/b.sh" # 判断被管控机器上的文件是否存在 ,如果存在,就跳过
ansible web -m script -a "removes=/root/a.py /root/b.sh" # 判断被管控机器上的文件是否存在 ,如果存在,就执行
4、copy:将主控机上的文件或文件夹copy到被控机上
backup # 备份,以时间戳为后缀名
content # 内容
dest # 目的地址
group # 文件的属组
mode #文件的权限 R 4 W 2 X 1
owner # 文件的属主
src #文件的源文件地址
ansible web -m copy -a "dest=/tmp/f src=/etc/fstab" #复制单独文件
ansible web -m copy -a "src=/etc/init.d dest=/tmp" #复制文件目录
ansible web -m copy -a "src=/etc/init.d/ dest=/tmp" # 复制文件夹内的所有的文件
ansible db -m copy -a "dest=/tmp/b.sh src=/root/b.sh mode=644 owner=alex" # 复制文件并修改权限和属主
ansible db -m copy -a "src=/etc/init.d dest=/tmp owner=alex" # 修改文件夹的权限或者属主属组时,文件夹内的所有文件的权限也会被修改
# 通过md5来做校验
ansible db -m copy -a "dest=/tmp/b.sh src=/root/b.sh mode=644 owner=alex backup=yes" # 复制文件并将原来的文件做备份
ansible db -m copy -a "dest=/tmp/c.txt content='大弦嘈嘈如急雨,小弦切切如私语'" # 直接往文件里面写入文件,是直接覆盖写入,慎用
5、file:在管控机上执行文件相关操作
access_time # 创建时间
group # 属组
mode # 权限
owner # 属主
path # 文件的路径
src # 源地址,只有在软连接和硬链接的时候才会使用
state #参数:directory目录 touch文件 link软连接 hard硬链接 absent 删除
ansible db -m file -a "path=/alex state=directory" # 创建一个目录
ansible db -m file -a "path=/root/alex.txt state=touch" # 创建一个文件
ansible db -m file -a "src=/root/q.txt path=/tmp/q state=link" # 创建软连接,源地址是被管控机上的文件地址
ansible db -m file -a "path=/tmp/q state=absent" # 删除文件或者文件夹
补充:
软连接 -> 快捷方式 - 会跟源文件改变 - ln -s
硬链接 -> 硬盘的重复应用 - 会跟源文件改变 - ln
复制 -> 复制了一份 - 不会跟源文件改变 - cp
6、fetch:远程收集被管控机上的文件
dest #目标地址
src #源地址
ansible db -m fetch -a "dest=/tmp src=/var/log/cron" #复制远程被管控机器的文件到主控机器上
#特点:以被管控机的ip为目录,并保留原来的目录结构
内容总结
ansible 的安装 epel源
ping
host-pattern 格式
- 单个ip地址
- 多个ip地址,用逗号分隔
- 所有ip地址,用all 表示
- 单个组
- 多个组
- 交集 ‘web:&db’
- 并集
- ‘web:db’
- web,db
- 差集 ‘web:!db’
模块
- command
- chdir 切换目录
- creates 有的时候,就不执行
- removes 有的时候,就执行
- shell $,<>|&;
- chdir
- creates
- removes
- script 执行管控机上的文件或者脚本
- creates 判断被管控机上是否存在,如果存在,就不执行
- removes
- copy
- src
- dest
- mode
- owner
- group
- backup
- content
- file
- src
- link
- hard
- path
- state
- link
- hard
- directory
- touch
- absent
- mode
- owner
- group
- access_time
- fetch 收集远程别管控上的文件
ansible学习笔记一的更多相关文章
- Ansible 学习笔记
最近因为需要管理很多台机器,而这些机器又需要频繁重新安装,实在受不了Puppet需要在每个客户机上都安装一遍,于是转头开始学些Ansible.根据这段时间的使用,这个确实是神器,唯一的感觉就是相见恨晚 ...
- ansible学习笔记三:playbook和roles
参考博客: Ansible 系列之 Playbooks 剧本 -飞走不可(博客园) linux运维学习之ansible的playbook及roles的使用 - 51CTO博客 nginx 基于uwsg ...
- Ansible学习笔记
一.Ansible简介 Ansible是一种agentless(基于ssh),可实现批量配置.命令执行和控制,基于Python实现的自动化运维工具. 其特性有: ①模块化:通过调用相关模块,完成指定任 ...
- ansible学习笔记二
Ad-Hoc命令: 所谓Ad-Hoc,简而言之是"临时命令",英文中作为形容词有"特别的,临时"的含义.Ad-Hoc只是官方对Ansible命令的一种称谓. 从 ...
- 我的Ansible学习笔记
Ansible常见错误 http://afewbug.com/article/26官方文档 http://docs.ansible.com/ansible/安装配置 http://sofar.blog ...
- Ansible学习笔记(一):部署管理Windows机器遇到的一些坑
在给国盛通上海测试环境做Ansible管理Windows服务器的时候,遇到了一些坑,Google解决掉了,特此记录,坑用红色标记. 一.环境说明 1.Ansible管理主机 操作系统:CentOS 7 ...
- Ansible学习记录一:Linux下部署
0.Ansible介绍 Ansible 是一个简单的自动化运维管理工具,可以用来自动化部署应用.配置.编排 task(持续交付.无宕机更新等),采用 paramiko 协议库(fabric 也使用这个 ...
- ansible2.7学习笔记系列
写在前面:ansible的资料网上很多,本人也是参考网上资料,做总结,如有错误,麻烦指出,谢谢. 所谓学习笔记,就是不断成长的过程,也许一段时间后有更深入理解了,就会继续更新笔记. 笔记定位:目前写的 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
随机推荐
- js 读取包含特殊字符的属性值
在JS中对象的属性可以通过两种方式访问:object.property和object["property"]. 包含特殊字符的属性只能以此方式访问: object["pr ...
- 【CF1141E】Superhero Battle
\[x*p\ge y\rightarrow x=\lfloor{{y-1}\over p}\rfloor+1\]
- django 通过邮箱和用户名都能登录
一. 在settings.py 文件中的#Application definition 下增加代码: AUTHENTICATION_BACKENDS=( 'users.views.CustomBack ...
- AVL平衡二叉树
AVL树 1.若它的左子树不为空,则左子树上所有的节点值都小于它的根节点值. 2.若它的右子树不为空,则右子树上所有的节点值均大于它的根节点值. 3.它的左右子树也分别可以充当为二叉查找树. 例如: ...
- Luogu P3239 [HNOI2015]亚瑟王
题目链接 \(Click\) \(Here\) 期望神题.最开始一直尝试推朴素一点的,逻辑上的\(DP\)式子,后来发现一直出锅,可能是我的式子没容斥对... 题解中给出的想法是这样的: 首先,如果直 ...
- mongodb的sql日志
在Yii2中是没有打印出mongodb的sql语句,故借用下log来查看吧. 在网上有说可以使用$model->find()->createCommand()->getRawSql( ...
- Shiro简介(一)
1.shiro是一个安全验证框架,可以完成认证.授权.加密.会话管理.与Web集成.缓存等. Authentication:身份认证/登入 Authorization:权限验证.粗粒度权限指对某一 ...
- sqlserver修改计算机名称。
SELECT @@SERVERNAME As [@@SERVERNAME], CAST(SERVERPROPERTY('MACHINENAME') AS VARCHAR(128)) + COALESC ...
- css3好看的background渐变背景色积累
1. Tippy.js background: linear-gradient(91deg,#f1eefc,#9dc6ff 70%,#a5bcff);(body背景色) background: lin ...
- 使用nvm安装node,全局npm,cnpm
1.nvm-windows下载 下载地址https://github.com/coreybutler/nvm-windows/releases,下载nvm-setup.zip 2.安装nvm 首先把n ...