Ansible服务

一:什么是Ansible

Ansible是python中的一套模板,系统中的一套自动化工具,只需要使用 ssh 协议连接及可用来系统管理、自动化执行命令等任务

二:Ansible安装部署

[root@m01 ~]# yum install ansible -y

三:Ansible主机清单

3.1 配置主机组相关配置

定义要管理的主机
[root@m01-61 etc]# vim /etc/ansible/hosts
[web]
172.16.1.8
172.16.1.9
172.16.1.7

因为是使用ssh协议去连接的,如果之前没有分发公钥,需要输入用户名和密码,就可以直接在主机组里面定义
[web]
172.16.1.8 
172.16.1.9 

也可以使用变量,这个变量对整个web主机组生效
[web:var]
ansible_ssh_pass='123456'

四:Ansilbe常用模块

4.1 模块语法

参照ansible官网学校
https://docs.ansible.com/

ansilble 主机名称/主机组名称/主机地址/ -m 模块名称 -a "执行什么动作"

4.2 ping模板

[root@m01-61 etc]# ansible web -m ping
172.16.1.7 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
172.16.1.8 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
172.16.1.9 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

4.3 command模块

类似于shell,但是只能执行简单的命令,复杂的命令和有些符号不能识别,用的比较少

查看hostname
[root@m01-61 etc]# ansible web -m command -a "hostname"
172.16.1.9 | CHANGED | rc=0 >>
web03-9
172.16.1.7 | CHANGED | rc=0 >>
web01-7
172.16.1.8 | CHANGED | rc=0 >>
web02-8

4.4 shell 模板

使用命令查看ip

[root@m01-61 etc]# ansible web -m shell -a "ifconfig | grep eth0"
172.16.1.7 | CHANGED | rc=0 >>
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
172.16.1.9 | CHANGED | rc=0 >>
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
172.16.1.8 | CHANGED | rc=0 >>
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

执行shell脚本

执行shell脚本在待执行的shell脚本的主机上创建sh脚本
[root@web03-9 opt]# vim hello.sh 
#!/bin/sh
echo "`hostname`"

使用ansible执行shell脚本
[root@m01-61 etc]# ansible web -m shell -a "sh /opt/hello.sh"
172.16.1.9 | CHANGED | rc=0 >>
web03-9

4.5 copy拷贝文件

拷贝m01的hosts文件到其他主机的/opt目录下

[root@m01-61 opt]# ansible 172.16.1.8 -m copy -a "src=/etc/hosts dest=/opt"
172.16.1.8 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "checksum": "7c9d1d53a8b6f35918595fabccf5dc760155731e", 
    "dest": "/opt/hosts", 
    "gid": 0, 
    "group": "root", 
    "mode": "0644", 
    "owner": "root", 
    "path": "/opt/hosts", 
    "size": 511, 
    "state": "file", 
    "uid": 0
}

在传输文件时,修改文件的属主和属组信息

[root@m01-61 /]# ansible 172.16.1.7 -m copy -a "src=/opt/cxy.txt dest=/opt owner=cxy group=cxy"
172.16.1.7 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "checksum": "fa5a578a265ba393f3ed20fc77700ac68309977a", 
    "dest": "/opt/cxy.txt", 
    "gid": 1000, 
    "group": "cxy", 
    "md5sum": "abdf0785796b5eeb963cf17acdb05419", 
    "mode": "0644", 
    "owner": "cxy", 
    "size": 32, 
    "src": "/root/.ansible/tmp/ansible-tmp-1614320580.28-2951-255737454473188/source", 
    "state": "file", 
    "uid": 1000
}

在传输文件时,修改文件的权限

[root@m01-61 opt]# ansible 172.16.1.7 -m copy -a "src=/opt/cxy.txt dest=/opt mode=600"

创建文件并直接写入内容

[root@m01-61 opt]# ansible 172.16.1.7 -m copy -a "content='cxy123456' dest=/etc/rsync.password mode=600"
172.16.1.7 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "checksum": "e8c29180b366ab284b861ea669fdd5f902936e7b", 
    "dest": "/etc/rsync.password", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "b865483fef2ecaf9e348abf03c349240", 
    "mode": "0600", 
    "owner": "root", 
    "size": 9, 
    "src": "/root/.ansible/tmp/ansible-tmp-1614321219.9-3054-172166927256398/source", 
    "state": "file", 
    "uid": 0
}

复制目录

当src=/data的时候,等于是将data这个目录和data目录下面的文件全部传输过去了
[root@m01-61 /]# ansible 172.16.1.7 -m copy -a "src=/data dest=/data"
172.16.1.7 | CHANGED => {
    "changed": true, 
    "dest": "/data/", 
    "src": "/data"
}

当src=/data/,是将data目录下的文件传输过去了,不包含/data/这个目录
[root@m01-61 /]# ansible 172.16.1.7 -m copy -a "src=/data/ dest=/data"

参数说明:

src #推送数据的源文件信息
dest #推送数据的目标路径
backup #对推送传输过去的文件,进行备份
content #直接批量在被管理端文件中添加内容
group #将本地文件推送到远端,指定文件属组信息
owner #将本地文件推送到远端,指定文件属主信息
mode #将本地文件推送到远端,指定文件权限信息

4.6 file创建文件并设置文件属性

创建目录

[root@m01-61 /]# ansible 172.16.1.7 -m file -a "path=/data/cxy/ state=directory"

创建文件并更改属性

[root@m01-61 /]# ansible 172.16.1.7 -m file -a "path=/data/cxy/110.txt state=touch mode=755 owner=cxy group=cxy"

创建软链接

[root@m01-61 /]# ansible 172.16.1.7 -m file -a "src=/data/cxy/ dest=/data/cxy_link state=link"

参数说明

path #指定远程主机目录或文件信息
recurse #递归授权

state:
directory #在远端创建目录
touch #在远端创建文件
link #link 或 hard 表示创建链接文件
absent #表示删除文件或目录
mode #设置文件或目录权限
owner #设置文件或目录属主信息
group #设置文件或目录属组信息

4.7 script模块

编写脚本
[root@m01-61 cxy_shell]# vim hello.sh
#!/bin/sh
mkdir /data
echo "Hello wrold" > /data/cxy.txt

使用script模块执行脚本,不需要将脚本文件推送到目标主机执行,在本地运行模板,等同于在远程执行
[root@m01-61 cxy_shell]# ansible web -m script -a "/cxy_shell/hello.sh"

4.8 yum模块

[root@m01-61 cxy_shell]# ansible web -m yum -a "name=httpd state=installed"

参数说明:

name       #指定要安装的软件包名称
state      #指定使用 yum 的方法
installed, present #安装软件包
removed, absent #移除软件包
latest     #安装最新软件包

4.9 service模板

[root@m01-61 cxy_shell]# ansible web -m service -a "name=nginx state=stopped enabled=yes"

参数说明:

name # 定义要启动服务的名称
state # 指定服务状态
started #启动服务
stopped #停止服务
restarted #重启服务
reloaded #重载服务
enabled #开机自启

4.10 mount模块

ansible web -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults
state=present"
ansible web -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults
state=mounted"
 web -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults
state=unmounted"
web -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults
state=absent"

状态解释:

present # 开机挂载,仅将挂载配置写入/etc/fstab
mounted # 挂载设备,并将配置写入/etc/fstab
unmounted # 卸载设备,不会清除/etc/fstab 写入的配置
absent # 卸载设备,会清理/etc/fstab 写入的配置

4.11 user模块

创建用户指定uid,gid,不创建家目录也不允许登陆

ansible web -m user -a "name=cxy uid=888 group=888 shell=/sbin/nologin
create_home=no"`

参数说明:

uid #指定用户的 uid
group #指定用户组名称
groups #指定附加组名称
password #给用户添加密码
shell #指定用户登录 shell
create_home #是否创建家目录

4.12 group模块

创建用户组

ansible oldboy -m group -a "name=cxy gid=888 state=present"

参数说明:

name #指定创建的组名
gid #指定组的 gid
state
absent #移除远端主机的组
present #创建远端主机的组(默认)

4.13 mount模块

ansible backup -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults
state=present"
ansible backup -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults
state=mounted"
ansible backup -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults
state=unmounted"
ansible backup -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults
state=absent"

参数说明:

present # 开机挂载,仅将挂载配置写入/etc/fstab
mounted # 挂载设备,并将配置写入/etc/fstab
unmounted # 卸载设备,不会清除/etc/fstab 写入的配置
absent # 卸载设备,会清理/etc/fstab 写入的配置

4.14 unarchive模块

解压远程服务器的压缩包到指定目录,压缩文件是在远程服务器上

ansible 172.16.1.31 -m unarchive -a "src=/opt/sys.tar.gz dest=/opt/ remote_src=yes"

解压本地文件到指定机器的指定目录

ansible 172.16.1.31 -m unarchive -a "src=/opt/log.tar.gz dest=/opt/" 

4.15 archive模块

压缩单个文件

ansible 172.16.1.31 -m archive -a "path=/var/log/message dest=/tmp/log.tar.gz format=gz force_archive=true" 

五:Ansible输出信息颜色

01. 绿色信息:  查看主机信息/对主机未做改动
02. 黄色信息:  对主机数据信息做了修改
03. 红色信息:  命令执行出错了
04. 粉色信息:  忠告信息
05. 蓝色信息:  显示ansible命令执行的过程
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,951评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,606评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,601评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,478评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,565评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,587评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,590评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,337评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,785评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,096评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,273评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,935评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,578评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,199评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,440评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,163评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,133评论 2 352

推荐阅读更多精彩内容

  • 第一章 Ansible介绍 1.手工运维与自动化运维 1.手动运维时代 2.自动化运维 3.自动化运维带来的好处 ...
    吃可爱长大鸭阅读 424评论 0 9
  • 第一章 Ansible介绍 0.手工运维与自动化运维 1.手动运维时代 2.自动化运维 1.什么是Ansible ...
    被运维耽误的厨子阅读 2,843评论 2 9
  • Linux System Environment Ansible简介 Ansible Function Ansib...
    DB哥阅读 193评论 0 0
  • 第一节:什么是Ansible Ansible 是 python 中的一套模块,系统中的一套自动化工具,只需要使用 ...
    chenkang阅读 303评论 0 0
  • 第一章 Ansible介绍 0.手工运维与自动化运维 1.手动运维时代 2.自动化运维 3.自动化运维带来的好处 ...
    丶Daniel阅读 326评论 0 0