ansible1
前期工作:
第一步:下载epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
第二步:安装
yum install -y ansible
ansible 命令格式
Usage: ansible <host-pattern> [options]
-a MODULE_ARGS 模块参数
-C --check 检查语法
-f FORKS 并发
--list-hosts 列出主机列表
-m MODULE_NAME 模块名字
ssh 认证方式
- 密码
- 秘钥
- ssh-keygen 生成秘钥对
- ssh-copy-id 复制公钥到远程主机
- 私钥加密,公钥解密
查看ansible生成的文件
rpm -ql ansible
/etc/ansible
/etc/ansible/ansible.cfg # ansible 配置文件
/etc/ansible/hosts
/etc/ansible/roles
ping走的是ICMP协议
ansible第一条命令
ansible 192.168.12.122 -m ping ping一台机器
ansible 192.168.12.123, 192.168.12.124 -m ping ping多台机器
ansible all -m ping ping所有机器
ansible web -m ping ping一个组
ansible 'web:!db' -m ping ping web中有但是db中没有
ansible 'web:&db' -m ping ping web和db的交集
ansible 'web:db' 或 'web,db' -m ping ping web和db的并集
hosts文件内容
# It should live in /etc/ansible/hosts
#
# - Comments begin with the '#' character #是注释
# - Blank lines are ignored 空行被忽略
# - Groups of hosts are delimited by [header] elements []表示主机组
# - You can enter hostnames or ip addresses 可以输入主机名或者ip地址
# - A hostname/ip can be a member of multiple groups 一台主机可以被分配多个组
www[001:006].example.com www001到www006.example.com
host-pattern格式
- 单个的机器
- 多个的机器, 用逗号隔开
- 全部机器, 用all
- 可以写一个分组
- 可以写多个分组
- 并集
- 逗号隔开
- 冒号隔开
- 交集 :& 隔开
- 差集 :! 隔开
ansible-doc 查看模块帮助信息
ansible-doc [-l|-F|-s] [options] [-t <plugin type> ] [plugin]
- j 以json格式显示所有模块信息
- l 列出所有的模块
- s 显示模块的摘要信息
# 直接显示模块的所有帮助信息
ansible 特性:
幂等性 不管执行几次,结果都是一样的
ansible命令相关:
ansible web -a 'ls'
ansible web -a 'chdir=/tmp pwd' # 先切换目录,在执行相应的命令,一般情况下在编译时使用
ansible web -a 'creates=/tmp pwd' # 如果creates的文件存在,则不执行后面的操作
ansible web -a 'removes=/tmp pwd' # 如果removes的文件存在,则执行后面的操作
ansible web -a 'removes=/tmp mkdir /data' # 会执行后面的mkdir命令
ansible web -a 'creates=/data2 mkdir /data2' # 会执行后面的mkdir命令
补充
ansible web -m command -a 'useradd wjs' # 创建用户
查看用户是否被创建成功
tail -l /etc/passwd
tail -l /etc/shadow
id wjs
echo '1' | passwd --stdin wjs 非交互式修改(wjs用户)密码
shell
< > | ; & $ 这些特殊字符command不支持
ansible web -m shell -a 'echo "1" | passwd --stdin alex' 设置alex的密码
ansible 192.168.12.122 -m shell -a '/root/a.sh' 执行shell脚本,前提是脚本有可执行权限
ansible 192.168.12.122 -m shell -a '/root/a.py' 执行python脚本,前提是脚本有可执行权限
script
ansible db -m script -a '/root/m.sh' 执行管控机上的文件
ansible web -m script -a 'creates=/root/a.sh /root/m.sh' # 查看的是被管控机上的文件是否存在,不存在则执行。
copy
ansible db -m copy -a 'dest=/tmp/a.sh src=/root/m.sh' 复制文件到远程主机
ansible db -m copy -a 'dest=/tmp/a.sh src=/root/m.sh backup=yes' 复制文件并备份远程文件
ansible web -m copy -a 'dest=/tmp/a.sh src=/root/m.sh owner=alex mode=700' 修改复制后的文件的属主和权限
ansible web -m copy -a 'src=/etc/init.d dest=/tmp' 复制目录到远程主机
ansible web -m copy -a 'src=/etc/init.d/ dest=/tmp' 复制目录里面的文件到远程主机
ansible web -m copy -a 'src=/etc/ansible dest=/tmp owner=wjs' 复制目录到远程主机,并修改目录的属主,并且里面文件的属主也被修改了
ansible web -m copy -a 'content="山人,山人" dest=/tmp/b.txt' 直接将content里面的内容添加到dest的文件里面
补充
ln -s 原文件地址 目录文件地址 创建软连接
ln 创建硬链接
ansible cache -m file -a "path=/tmp/wjs state=directory" 创建一个目录
ansible cache -m file -a "path=/tmp/wjs.txt state=touch" 创建一个文件
ansible cache -m file -a "path=/tmp/t state=link src=/etc/init.d" 创建软连接 path是目标文件 src是源文件
ansible cache -m file -a "path=/tmp/t state=absent" 删除文件
总结
host-pattern格式
- 单个主机
- 多个主机
- 所有主机 all
- 一个组
- 多个组
- 交集 'web:&db'
- 并集 'web:db' web, db
- 差集 'web:!db'
命令相关的模块
- command 不支持特殊字符 <>;!$|&
- shell
- script 执行管控机上的脚本
文件相关的模块
- copy
- content
- dest
- src
- onwer
- group
- mode
- backup
- file
- path
- state
- directory
- touch
- file
- absent
- link
- hard
- src
- link
- hard
ansible1的更多相关文章
- Ansible1:简介与基本安装【转】
Ansible是一个综合的强大的管理工具,他可以对多台主机安装操作系统,并为这些主机安装不同的应用程序,也可以通知指挥这些主机完成不同的任务.查看多台主机的各种信息的状态等,ansible都可以通过模 ...
- ansible-1 的安装
该文章摘自:http://my.oschina.net/firxiao/blog/343395,该文章制作笔记使用,不做他用,转载请注明原文链接出处 Ansible 默认是基于SSH协议进行通信的. ...
- Ansible1: 简介与基本安装
目录 Ansible特性 Ansible的基本组件 Ansible工作机制 Ansible的安装 Ansible是一个综合的强大的管理工具,他可以对多台主机安装操作系统,并为这些主机安装不同的应用程序 ...
- ansible-1
ansible与salt对比: 相同: 都是为了同时在多台机器上执行相同的命令 都是python开发 不同: agent(saltstack需要安装.ansible不需要) 配置(salt配置麻烦,a ...
- 随笔-ansible-1
系统下所有的操作,从运维操作角度划分为两类: 1.文件传输 2.命令执行 系统下所有的操作,从自动化工作类型角度划分为: 1.应用部署 2.配置管理 3.任务流编排 使用root生成默认的秘钥对: # ...
- Ansible-1 基本认识及清单与模块
ansible 一.常用的自动化运维工具 1.puppet 基于ruby开发,采用c/s架构,扩展性强,基于ssl,远程命令执行相对较弱, 2.saltstack 基于python开发,采用C/S架构 ...
- Linux程序包管理之yum及源代码安装
第十六章.Linux程序包管理之yum及源代码安装 目录 yum介绍 yum配置文件 yum的repo配置文件中可用的变量 yum命令的使用 使用光盘作为本地yum仓库 如何创建yum仓库 编译安装的 ...
- 自动化运维工具Ansible详细部署 (转载)
自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog. ...
- 自动化服务安装部署工具-Ansible
自动化运维工具Ansible详细部署 ================================================================================= ...
随机推荐
- leetcode993
public class Node { public int CurNode; public int FatherNode; public int Layer; } public class Solu ...
- 玩转音频、视频的利器:FFmpeg
导语 当下直播平台发展十分迅猛,依靠游戏内直播平台的发展带动游戏活跃提升收入,那么对于我们开发来说如何玩转视频呢?下面就来介绍一个音频.视频处理利器——FFmpeg. FFmpeg 简介 FFmpeg ...
- centos7 Apache 2.4.6 多域名多网站配置
Apache 2.4.6 多域名多网站配置 在/etc/httpd/conf 下 编辑 vim httpd.conf 添加:ServerName 外网IP 并注释 #DocumentRoot &quo ...
- Activity启动模式(lauchMode)
Activity启动模式(lauchMode) 本来想针对Activity中的启动模式写篇文章的,后来网上发现有人已经总结的相当好了,在此直接引用过来,并加上自己的一些理解,在此感谢原作者. 文章地址 ...
- pod引用第三方库的几种方式
pod引用库的原理,本质上是去找.podspec文件,podspec中包含库的地址及最新的版本号(tag标签),如果pod时没有指定版本,则pod install时会去下载podspec文件中指定的最 ...
- Lazarus的DBGrid中回车键的处理
Lazarus的DBGrid中回车键默认行为是向下移动一个记录,如果想对这一事件做处理,请不要在onkeypress里处理,而在onkeydown事件里处理.
- happyxiaofan的程序员书单
转自 happyxiaofan 读书的看法 从15年7月至今,研究生期间读了不少书,读书让我学到了很多,也是提升技术能力的一个重要手段.可能很多人嫌读书太花时间,曾经的我一度也是这么认为的,觉得一 ...
- eclipse无法加载主类错误(项目上红色感叹号问题解决)
在用eclipse运行一个简单的继承程序时,在点击运行时提示如下: 点击process后,提示无法加载主类错误 在网上一直没找到原因,连helloword程序都无法正常运行了,而且此时我看到文件项目中 ...
- debian下redis2.8.17安装过程
下载redis源码包,我下载的是redis2.8.17 解压缩该源码包 tar zxf redis-2.8.17.tar.gz 进入解压缩后的目录 cd redis-2.8.17/ 添加redis用户 ...
- 转:HTML5页面如何在手机端浏览器调用相机、相册功能
HTML5页面如何在手机端浏览器调用相机.相册功能 开发微信端浏览器访问的HTML5的页面,页面中有一个<input id="input" type="file&q ...