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 收集远程别管控上的文件

ansible学习笔记一的更多相关文章

  1. Ansible 学习笔记

    最近因为需要管理很多台机器,而这些机器又需要频繁重新安装,实在受不了Puppet需要在每个客户机上都安装一遍,于是转头开始学些Ansible.根据这段时间的使用,这个确实是神器,唯一的感觉就是相见恨晚 ...

  2. ansible学习笔记三:playbook和roles

    参考博客: Ansible 系列之 Playbooks 剧本 -飞走不可(博客园) linux运维学习之ansible的playbook及roles的使用 - 51CTO博客 nginx 基于uwsg ...

  3. Ansible学习笔记

    一.Ansible简介 Ansible是一种agentless(基于ssh),可实现批量配置.命令执行和控制,基于Python实现的自动化运维工具. 其特性有: ①模块化:通过调用相关模块,完成指定任 ...

  4. ansible学习笔记二

    Ad-Hoc命令: 所谓Ad-Hoc,简而言之是"临时命令",英文中作为形容词有"特别的,临时"的含义.Ad-Hoc只是官方对Ansible命令的一种称谓. 从 ...

  5. 我的Ansible学习笔记

    Ansible常见错误 http://afewbug.com/article/26官方文档 http://docs.ansible.com/ansible/安装配置 http://sofar.blog ...

  6. Ansible学习笔记(一):部署管理Windows机器遇到的一些坑

    在给国盛通上海测试环境做Ansible管理Windows服务器的时候,遇到了一些坑,Google解决掉了,特此记录,坑用红色标记. 一.环境说明 1.Ansible管理主机 操作系统:CentOS 7 ...

  7. Ansible学习记录一:Linux下部署

    0.Ansible介绍 Ansible 是一个简单的自动化运维管理工具,可以用来自动化部署应用.配置.编排 task(持续交付.无宕机更新等),采用 paramiko 协议库(fabric 也使用这个 ...

  8. ansible2.7学习笔记系列

    写在前面:ansible的资料网上很多,本人也是参考网上资料,做总结,如有错误,麻烦指出,谢谢. 所谓学习笔记,就是不断成长的过程,也许一段时间后有更深入理解了,就会继续更新笔记. 笔记定位:目前写的 ...

  9. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

随机推荐

  1. macOS: sudo : Operation not permitted

    通过查阅资料,了解到这个是之前引入的rootless机制.这让我从Linux换到Mac的用户很不习惯 https://developer.apple.com/videos/play/wwdc2015/ ...

  2. Arch Linux中使用VMware Workstation不能打开vmmon内核模块

    打开VMware Workstation出现错误提示:Could not open /dev/vmmon: No such device.Please make sure that the kerne ...

  3. 纯原生JS大图轮播

    CSS部分: CSS: <style type="text/css"> #banner { position: relative; width: 500px; heig ...

  4. A1006. Sign In and Sign Out

    At the beginning of every day, the first person who signs in the computer room will unlock the door, ...

  5. IDEA和WebStorm破解教程--激活n年(随时更新)

    首先,打开蓝雨的官网--->http://idea.lanyus.com/,找到这个jar包  之后,去官网下载IDEA--->https://www.jetbrains.com/idea ...

  6. maomao的fft板子

    \(QwQ\) #include <cmath> #include <cstdio> #include <cstring> #include <iostrea ...

  7. (LIS DP) codeVs 1044 拦截导弹

    题目描述 Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某 ...

  8. Druid数据源配置

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-met ...

  9. QImage与cv::Mat转换;

    QImage主要格式有QImage::Format_RGB32, QImage::Format_RGB888, QImage::Format_Index8, 不同的格式有不同的排布: 格式部分可以参考 ...

  10. qml: 组件复用

    在编写组件时,使用下面两种方法可以实现组件的复用: import QtQuick 2.0 import QtQuick.Window 2.2 import QtQuick.Controls 1.4 a ...