Linux之ansible 常用模块
目的
代码发布系统
代码发布:把本地的代码通过某些方式弄到线上,可以供别人访问
部署
前戏
ansible 批量在远程主机上执行命令
puppet ruby
ansible
saltstack
python开发
openpyxl 操作excel表格 读写
git 版本控制
celery 异步,延时任务,定时任务的一个芹菜
ansible
1、安装epel源
yum install -y wget # 安装wget
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo # 下载epel源文件
2、安装ansible
yum install ansible -y
ansible命令格式
Usage: ansible <host-pattern> [options]
-a MODULE_ARGS, --args=MODULE_ARGS # 模块的参数
-C, --check # 会去执行,但是不做任何的改变,干跑,白跑
-f FORKS, --forks=FORKS # 指定进程数,做并发
--list-hosts #列出主机
-m MODULE_NAME # 模块名称
--syntax-check #检查语法
-k, --ask-pass ask for connection password #指定密码
查看ansible生成的配置文件
rpm -ql ansible
/etc/ansible
/etc/ansible/ansible.cfg
/etc/ansible/hosts
/etc/ansible/roles
10.0.0.132
10.0.0.133
10.0.0.134
ssh认证方式
密码
秘钥
ssh-keygen # 生成秘钥
ssh-copy-id root@10.0.0.132 # 将秘钥文件复制到远程主机
ping 走的是icmp协议
ansible的第一个命令
ansible 10.0.0.132 -m ping
ansible 10.0.0.133 -m ping
ansible 10.0.0.134 -m ping
ansible all -m ping # 所有机器,hosts文件里面
ansible 10.0.0.133,10.0.0.132 -m ping # 部分机器
## 分组信息
[web]
10.0.0.132
10.0.0.133
[db]
10.0.0.133
10.0.0.134
[cache]
10.0.0.134
## www[001:006].example.com 从www001到www006
ansible web --list-hosts # 用来获取符合条件的主机
ansible web -m ping # 探测组内的机器
ansible web,db -m ping # 获取db和web的并集
ansible 'web:&db' -m ping # 获取db和web的交集
ansible 'web:!db' -m ping # 获取db和web的差集,在web中但是不在db中的
ansible 'web:db' -m ping # 获取db和web的并集
弱口令校验
密码要符合的规则
必须有大写字母,小写字母,数字,特殊字符
密码必须12位以上
密码需要三个一换
host-pattern的格式
单个的主机
单个组
多个组
交集
‘web:&db’
并集
‘web:db’
web,db
差集
‘web:!db’
所有的机器 all
多个主机
获取模块帮助信息
Usage: ansible-doc [-l|-F|-s] [options] [-t <plugin type> ] [plugin]
-j, --json #以json的方式返回所有模块的信息
-l # 列出所有的模块
-s, --snippet # 以片段式显示模块的帮助信息
# 显示全部信息
ansible-doc -l |wc -l #统计ansible的模块
command
chdir #切换目录
creates # 如果存在,就不执行,如果不存在,就执行
removes # 如果不存在,就不执行,如果存在,就执行
ansible web -m command -a "pwd"
ansible web -m command -a "ls /tmp"
ansible web -m command -a "chdir=/tmp pwd" # 切换目录,一般做编译安装
ansible web -m command -a "creates=/tmp pwd" # 不被执行,因为/tmp已经存在,
ansible web -m command -a "creates=/tmp2 pwd" # 被执行,因为/tmp2目录不存在
ansible web -m command -a "creates=/tmp2 mkdir /data" # 会被执行,因为/tmp2目录不存在
ansible web -m command -a "removes=/tmp2 pwd" # 不被执行,因为/tmp2目录不存在
ansible web -m command -a "removes=/tmp pwd" # 会被执行,因为/tmp已经存在,
补充
#查看用户创建成功与否
1.ll /home
2.tail -1 /etc/passwd
3.tail /etc/shadow
4.id alex
echo "alex3714" |passwd --stdin alex # 给用户设置密码,不需要二次确认
[root@localhost ~]# name=alex
[root@localhost ~]# echo "$name"
alex
[root@localhost ~]# echo '$name'
$name
shabang
shell
ansible web -m shell -a "echo 'alex'|passwd --stdin alex" # 给用户设置密码
ansible 10.0.0.132 -m shell -a "bash a.sh" # 执行shell脚本
ansible 10.0.0.132 -m shell -a "./a.sh"
ansible 10.0.0.132 -m shell -a "/root/a.sh"
ansible 10.0.0.132 -m shell -a "/root/a.py" # 执行python脚本
ansible 10.0.0.132 -m shell -a "python a.py"
# shell 脚本
#!/bin/bash
mkdir /alex2sb11
# python脚本
#!/bin/env python
#coding:utf-8
print "停车坐爱枫林晚,霜叶红于二月花"
script
ansible db -m script -a "/root/a.sh" # 执行的是本地的脚本,管控机上的脚本
ansible db -m script -a "creates=/root/a.sh /root/a.sh" # 判断是远程主机是否存在,如果存在,就不执行,如果不存在,就执行
ansible db -m script -a "removes=/root/a.sh /root/a.sh" # 判断的主机是否存在,如果存在,就执行,如果不存在,就不执行
copy
backup # 创建备份文件,以时间戳结尾
content # 直接写内容
dest # 目标地址
group #文件的属组
mode # 文件的权限W 2 R 4 X 1
owner #文件的属主
src # 原文件
ansible db -m copy -a "src=/root/a.sh dest=/root/a.sh" # 复制文件
ansible db -m copy -a "src=/root/a.sh dest=/root/a.sh mode=755" # 复制文件,并修改文件的权限
ansible db -m copy -a "src=/root/a.sh dest=/root/a.sh mode=755 owner=alex" #复制文件,修改文件的权限,属主,根据md5值来判断
ansible db -m copy -a "src=/etc/init.d dest=/tmp/" # 复制文件夹
ansible db -m copy -a "src=/etc/init.d/ dest=/tmp/" # 复制文件夹下面的所有文件
ansible db -m copy -a "src=/etc/init.d dest=/tmp/ owner=alex " # 复制文件夹,并改变文件夹的属性,文件夹的文件的属性也会跟着改变
ansible db -m copy -a "content='大弦嘈嘈如急雨,小弦切切如私语' dest=/tmp/a.sh" # 直接写文字,覆盖写入,要慎用
ansible db -m copy -a "src=/root/a.sh dest=/root/a.sh mode=755 owner=alex backup=yes" #备份文件,如果远程机器上没有要备份的文件,即使指定了backup=yes 也不会去备份文件
file
access_time # 访问事件
group # 属组
mode #权限
owner #属主
path #路径
src # 原文件,link和hard的时候使用
state:
directory 文件夹
file
touch 空文件
link 软连接
hard 硬链接
absent 删除
ansible db -m file -a "path=/tmp/baoyuan state=directory" # 创建一个目录
ansible db -m file -a "path=/tmp/baoyuan state=directory owner=alex mode=644" # 创建一个目录,并制定属主,权限
ansible db -m file -a "path=/tmp/baoyuan.txt state=touch owner=alex mode=644" # 创建一个文件,并制定属主,权限
ansible db -m file -a "path=/tmp/f src=/etc/fstab state=link" # 创建一个软连接
ansible db -m file -a "path=/tmp/f state=absent" # 删除
补充
软连接 windows的快捷方式 ln —s 原文件 目标文件 源文件改变,目标文件也改变 可以跨越分区 原文件删除,链接失效
硬链接 指向同一个硬盘的地址 ln 原文件 目标文件 原文件改变,目标文件也改变 不可以跨域分区 原文件删除,不会受影响
复制
内容总结
ansible 安装,epel源
ansible 里面ping 走的是ssh
host-pattern的格式
单个的ip
多个的ip
单个组
多个组
交集
‘web:&db’
并集
‘web:db’
‘web,db’
差集
‘web:!db’
command 执行命令 不支持特殊字符 $ < > | ; &
chdir 切换目录,一般是编译安装
creates 判断是否存在,如果存在,就不执行,如果不存在,就执行
removes 判断是否存在,如果存在,就执行,如果不存在,就不执行
shell 执行远程机器上的shell脚本或者python脚本
chdir 切换目录,一般是编译安装
creates 判断是否存在,如果存在,就不执行,如果不存在,就执行
removes 判断是否存在,如果存在,就执行,如果不存在,就不执行
script 执行本地脚本,执行管控机上的脚本
chdir 切换目录,一般是编译安装
creates 判断远程主机是否存在,如果存在,就不执行,如果不存在,就执行
removes 判断远程主机是否存在,如果存在,就执行,如果不存在,就不执行
copy 将本地的文件复制到远程主机上
src 原文件
dest 目标文件
owner 属主
group 属组
mode 权限
backup 备份
content 直接写内容,覆盖写
file 在远程主机上创建文件,文件夹,软连接,硬链接
path 目录
src
link
hard
owner
group
mode
state
directory 文件夹
touch 文件
link 软连接
hard 硬链接
absent 删除
file
Linux之ansible 常用模块的更多相关文章
- ansible常用模块用法
ansible常用模块用法 2015-07-21 10:25 24458人阅读 评论(1) 收藏 举报 分类: Linux(44) ansible 版权声明:本文为博主原创文章,未经博主允许不得 ...
- Ansible常用模块命令
Ansible常用模块命令 一.安装ansible yum install epel-release yum install ansible 二.配置文件配置 vi /etc/ansible/ansi ...
- Ansible常用模块介绍及使用(week5_day1_part2)--技术流ken
Ansible模块 在上一篇博客<Ansible基础认识及安装使用详解(一)--技术流ken>中以及简单的介绍了一下ansible的模块.ansible是基于模块工作的,所以我们必须掌握几 ...
- Ansible常用模块介绍及使用(2)
Ansible模块 在上一篇博客<Ansible基础认识及安装使用详解(一)–技术流ken>中以及简单的介绍了一下ansible的模块.ansible是基于模块工作的,所以我们必须掌握几个 ...
- Ansible常用模块及API
Ansible安装 安装EPEL作为安装Ansible的yum源(CentOS6.4): rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel ...
- Ansible常用模块基本操作
Ansible是一个系列文章,我会尽量以通俗易懂.诙谐幽默的总结方式给大家呈现这些枯燥的知识点,让学习变的有趣一些. 前言 对于任何一个框架,一个应用,为了更便于推广,便于使用,便于商业化,都会顺便提 ...
- Ansible 常用模块详解
经过前面的介绍,我们已经熟悉了 Ansible 的一些常识性的东西和如何编译安装Ansible,从本章开始我们将全面介绍 Ansible 的各种生产常用模块,这些也是我们使用 Ansible 的过程中 ...
- ansible常用模块详解(三)
1.模块介绍 明确一点:模块的执行就类似是linux命令的一条命令,就单单的是为了执行一条语句,不是批量的操作,批量操作需要用到playbook内类似shell编写脚本进行批量. 1.1 模块的使用方 ...
- ansible常用模块入门
常用模块有以下几个 command copy shell crond yum service setup 1.command模块 ansible george -m command -a " ...
随机推荐
- python中类似三元表达式的写法
python中没有其它语言中的三元表达式,如: a = x > y ? m : n; python中的类似写法为: a = 1 b = 2 h = "" h = " ...
- Azkaban 使用问题及解决(一)
什么是Azkaban Azkaban是一款基于Java编写的任务调度系统 任务调度:有四个任务脚A.B.C.D,其中任务A与任务B可以并行运行,然后任务C依赖任务A和任务B的运行结果,任务D依赖任务C ...
- 一本通之 一堆迷宫 (Dungeon Master&走出迷宫&走迷宫)
一本通在线崩溃....... . 有图有真相 这是个三维迷宫,其实和二位迷宫差不多,只是方向多加了2个. 但这个题的输入十分恶心,一度被坑的用cin.ignore(),但还是不过... 它的正确输入方 ...
- ubuntu16.04上安装ros-kinetic
1.设置安装源 sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" ...
- 跨年呈献:HP-Socket for Linux 1.0 震撼发布
三年,三年,又三年,终于,终于,终于不用再等啦!就在今天,HP-Socket for Linux v1.0 震撼发布!还是一样的接口,一样的高效,一样的简便,一样的味道. HP-Socket ...
- 从javascript 调用angular的函数
从vanilla javascript 调用angular的函数: * 调用 service中的函数var yourService = angular.element(document.body).i ...
- Android自定义万能Canvas画布
一.需求: 1.在自定义的画布中实现可缩放手势,摇一摇可对控件进行整理排序: 2.画布中可以添加位置设定的控件,控件可以响应点击.长按.拖动事件: 3.控件A长按事件会隐藏画布中的控件除了A之外,显示 ...
- Java XML DOM解析范例源码
下边内容内容是关于Java XML DOM解析范例的内容.import java.io.InputStream; import java.util.ArrayList; import java.uti ...
- 解决pre-commit hook failed (add --no-verify to bypass)的问题
报错图 问题原因: pre-commit钩子惹的祸 当你在终端输入git commit -m"XXX",提交代码的时候, pre-commit(客户端)钩子,它会在Git键入提交信 ...
- CentOS7怎么更换yum源
163yum源:1)备份当前yum源防止出现意外还可以还原回来cd /etc/yum.repos.d/cp /CentOS-Base.repo /CentOS-Base-repo.bak2)使用wge ...