ansible学习笔记一

ansible学习笔记一

参考博客:

ansible学习 - 51CTO博客

一、安装

1 .下载epel源

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
  1. 安装
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 收集远程别管控上的文件

转载于:https://www.cnblogs.com/russellyoung/p/10552928.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值