前期工作:

  第一步:下载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的更多相关文章

  1. Ansible1:简介与基本安装【转】

    Ansible是一个综合的强大的管理工具,他可以对多台主机安装操作系统,并为这些主机安装不同的应用程序,也可以通知指挥这些主机完成不同的任务.查看多台主机的各种信息的状态等,ansible都可以通过模 ...

  2. ansible-1 的安装

    该文章摘自:http://my.oschina.net/firxiao/blog/343395,该文章制作笔记使用,不做他用,转载请注明原文链接出处 Ansible 默认是基于SSH协议进行通信的. ...

  3. Ansible1: 简介与基本安装

    目录 Ansible特性 Ansible的基本组件 Ansible工作机制 Ansible的安装 Ansible是一个综合的强大的管理工具,他可以对多台主机安装操作系统,并为这些主机安装不同的应用程序 ...

  4. ansible-1

    ansible与salt对比: 相同: 都是为了同时在多台机器上执行相同的命令 都是python开发 不同: agent(saltstack需要安装.ansible不需要) 配置(salt配置麻烦,a ...

  5. 随笔-ansible-1

    系统下所有的操作,从运维操作角度划分为两类: 1.文件传输 2.命令执行 系统下所有的操作,从自动化工作类型角度划分为: 1.应用部署 2.配置管理 3.任务流编排 使用root生成默认的秘钥对: # ...

  6. Ansible-1 基本认识及清单与模块

    ansible 一.常用的自动化运维工具 1.puppet 基于ruby开发,采用c/s架构,扩展性强,基于ssl,远程命令执行相对较弱, 2.saltstack 基于python开发,采用C/S架构 ...

  7. Linux程序包管理之yum及源代码安装

    第十六章.Linux程序包管理之yum及源代码安装 目录 yum介绍 yum配置文件 yum的repo配置文件中可用的变量 yum命令的使用 使用光盘作为本地yum仓库 如何创建yum仓库 编译安装的 ...

  8. 自动化运维工具Ansible详细部署 (转载)

    自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog. ...

  9. 自动化服务安装部署工具-Ansible

    自动化运维工具Ansible详细部署 ================================================================================= ...

随机推荐

  1. 2018年1月21日--2月4日 NAS

    二十号去比赛时,与同事闲聊时说起家庭服务器,后来搜到nas(网络附着存储器),找到freenas,突然觉得很有用,手机拍了大量的照片视频,存储在电脑,已经换过几次硬盘了,对于这些珍贵的资料,万一硬盘坏 ...

  2. jsfl 常用方法

    //打开fla文档 fl.openDocument (JSFL_PATH+"tongzhi.fla"); //发布flash fl.getDocumentDOM().publish ...

  3. Leetcode 题解 Trapping Rain Water

    题目链接:https://leetcode.com/problems/trapping-rain-water/description/ 思路: 1.先找到最左侧第一个高度不为0的柱子i. 2.从i+1 ...

  4. Delphi 字符串截取函数

    如果要使用LeftStr,RightStr,MidStr必需引用系统单元StrUtils; 声明变量Str:string; Str:=HelloWorld; 1,LeftStr(Str,2)=He;/ ...

  5. Eclipse开发Web常见异常

    1.java.lang.IllegalStateException: Web app root system property already set to different value 错误原因: ...

  6. 将 DNSCrypt 部署到 Openwrt 路由器上+ DNSmasq 解析国内域名用本地 DNS[ZT+实践]

    原文地址: 1.https://typcn.com/legacy/blog/posts/openwrt-dnscypt.html 2.http://www.openwrt.pro/post-376.h ...

  7. VBS处理AD帐号密码到期提醒的脚本[zt]

    原文:https://gallery.technet.microsoft.com/scriptcenter/f7f5f7ed-14ee-4d0e-81c2-7d95ce7e08f5 '======== ...

  8. Set和List的区别

    一: Set 不允许重复,List允许重复 二: Set 无序,List有序 . 这里的无序和有序, 是说的添加顺序和元素顺序的一致性. 比如添加时是obj1,obj2,obj3 ,那么list存储他 ...

  9. Hibernate 再接触 基础配置 续

    <property name="show_sql">true</property> 这句话是意思显示sql语句 <property name=&quo ...

  10. ArcGIS案例学习笔记-批处理擦除挖空挖除相减

    ArcGIS案例学习笔记-批处理擦除挖空挖除相减 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:批处理擦除.挖空.挖除.相减 数据源:chp13/ex5/pa ...