ansible基础模块

环境部署

m01        192.168.1.170        ansible管理端

backup    192.168.1.171        ansible受控端

nfs            192.168.1.172         ansible受控端

web01      192.168.1.173        ansible受控端

web02      192.168.1.174        ansible受控端

1、安装ansible

[root@localhost ~]# hostnameclt set-hostname m01

[root@localhost ~]# bash

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

//查看版本

[root@m01 ~]# ansible --version

ansible 2.9.23

2、ssh部署公钥认证

利用非交互式工具实现批量分发公钥与批量管理服务器

配置所有主机相互SSH登录无密码验证

[root@m01 ~]# ssh-keygen -t rsa

[root@m01 ~]# ssh-copy-id 192.168.1.171

[root@m01 ~]# ssh-copy-id 192.168.1.172

[root@m01 ~]# ssh-copy-id 192.168.1.173

[root@m01 ~]# ssh-copy-id 192.168.1.174

3、配置ansible主机清单

[root@m01 ~]# vim /etc/ansible/hosts          #编辑,在最后添加一行

写法一:

[nfzl]

192.168.1.171

192.168.1.172

192.168.1.173

192.168.1.174

写法二:

[nfzl]

192.168.1.171 ansible_ssh_pass='talent'

192.168.1.172 ansible_ssh_pass='talent'

192.168.1.173 ansible_ssh_pass='talent'

192.168.1.174 ansible_ssh_pass='talent'

[root@backup ~]# rm -rf .ssh/authorized_keys    #删除公钥

写法三

[nfzl]

192.168.1.171 ansible_ssh_user=root ansible_ssh_pass='talent' ansible_ssh_port=22

192.168.1.172 ansible_ssh_pass='talent'

192.168.1.173 ansible_ssh_pass='talent'

192.168.1.174 ansible_ssh_pass='talent'

写法四_拆分密码版

[nfzl]

192.168.1.171

192.168.1.172

192.168.1.173

192.168.1.174

[nfzl:vars]

ansible_ssh_pass='talent'

写法五_建议写法

[backup]

192.168.1.171

[nfs]

192.168.1.172

[web]

192.168.1.173

192.168.1.174

[nfzl:children]

backup

nfs

web

4、测试

[root@m01 ~]# ansible nfzl -m ping

[root@m01 ~]# ansible nfs -m ping

[root@m01 ~]# ansible nfzl -m command -a "hostname"

[root@m01 ~]# ansible nfzl -m shell -a "df -h | grep /$"            #shell支持管道符

[root@m01 ~]# ansible nfzl -m shell -a "df -h " -f 2                    #-f:指定一次显示返回主机信息的量

[root@m01 ~]# ansible nfzl -m shell -a "echo talent | passwd --stdin nfzl" -f 2  #修改密码

5、Aansible常用模块

在linux系统里把多个命令集合写到文件里,叫做脚本 在Ansible中把多个模块集中写到文件里,叫做剧本 剧本:就是把多个模块写到一个文件里来完成一个任务

1、 Ad-Hoc:命令 -> 文件 =脚本

2、Ansible playbook:模块 -> 文件 =剧本

Ansible注意事项->提示颜色信息说明

翔黄色:对远程节点进行相应修改

帽子绿:对远程节点不进行相应修改,或者只是对远程节点信息进行查看

深红色:操作执行命令有异常

浅紫色:表示对命令执行发出警告信息(可能存在问题,给你一下建议)

常用模块:

1、command 执行命令 command只能执行简单的命令

2、shell 执行命令 shell 可以使用管道

3、yum 安装软件模块

4、copy 配置模块

5、service 启动服务模块

6、user 用户管理

7、file 创建目录,创建文件,往文件里写内容

8、cron 定时任务

9、mount 挂载

模块动作

-a : 指定要执行的动作,如具体命令

-f:指定一次显示返回主机信息的量,如-f 1则一台主机一台主机的返回信息,-f 2则两台两台的返回主机结果信息

Examples

[root@m01 ~]# ansible nfzl -m shell -a "df -h " -f 2   

5.1 yum模块

yum模块用来在远程机器上安装软件包

在用yum模块安装软件之前先保证远端机器的yum源可用

Examples

[root@m01 ~]# ansible web -m yum -a "name=httpd state=present"

name —指定要安装的软件包

state —指定使用yum的哪些方法

installed, present —安装软件包

removed, absent —移除软件包

latest —安装最新软件包

5.2 copy模块

copy模块用来把本地文件批量传输到多台服务器上

Examples 

#示例一  显示黄色证明拷贝成功,如果在/etc/passwd文件没有变动的情况下再次拷贝则显示绿色表示无任何改动,只有在文件有变化的时候才会进行拷贝

[root@m01 ~]# ansible nfzl -m copy -a "src=/etc/hosts dest=/tmp/test.txt"

#示例二 运行结果是对被管理机目标文件拷贝前的文件进行备份

[root@m01 ~]# ansible nfzl -m copy -a "src=/etc/passwd dest=/tmp/test.txt backup=yes"

#示例 三   运行结果是将用户和密码写进Rsync/etc/rsync.passwd文件中,并且指定属主和属组都为root,权限设置600

[root@m01 ~]# ansible backup -m copy -a "content='rsync_backup:talent' dest=/etc/rsync.passwd owner=root group=root mode=600"

src —— 推送数据的源文件信息

dest —— 推送数据的目标路径

backup —— 对推送传输过去的文件进行备份

content —— 直接批量在被管理段文件中添加内容

group —— 将本地文件推送到远端,指定文件属组信息

owner —— 将本地文件推送到远端,指定文件属主信息

mode —— 将本地文件推送到远端,指定文件权限信息

5.3 service模块

service是服务管理模块

Examples

[root@m01 ~]# ansible web -m service -a "name=httpd state=started enabled=yes"

name —定义要启动服务的名称

state —指定服务状态是停止或运行,停止和运行指令要写成过去时

started —启动

stopped —停止

restarted —重启

reloaded —重载

enabled —是否让服务开启自启动

5.4 script模块

执行本地脚本,不用传输到远端,执行结果会作用于远端服务器上

[root@m01 ~]#mkdir -p /server/scripts/

[root@m01 scripts]# cd /server/scripts/

[root@m01 scripts]# vim change_passwd.sh

#!/bin/bash

useradd nfzl

echo talent | passwd --stdin nfzl && echo "password create successfully"

[root@m01 scripts]# ansible nfzl -m script -a "/server/scripts/change_passwd.sh"

5.5 file模块

file模块用来创建文件或目录

Examples

#示例1 创建目录

[root@m01 ~]# ansible nfzl -m file -a "path=/server/scripts state=diretory"

#示例2 创建文件,并设定属主、属组、权限

[root@m01 ~]# ansible all -m file -a "path=/server/scripts/nfzl.txt state=touch owner=nfzl group=root mode=600"

#示例3 递归授权目录的方式

[root@m01 ~]# ansible all -m file -a "path=/var/www/html state=directory owner=root group=root mode=700"

[root@m01 ~]# ansible all -m file -a "path=/data state=directory owner=www group=www recurse=yes"

path —指定远程主机目录或文件信息

recurse —递归授权

state —

directory —在远端创建目录

touch —在远端创建文件

link —link或hard表示创建连接文件

absent —表示删除文件或目录

mode —设置文件或目录权限

owner —设置文件或目录属主信息

group —设置文件或目录属组信息

5.6 user模块

Examples

#示例一、创建joh用户,uid是1008,基本组是adm

[root@m01 ~]# ansible nfzl -m user -a "name=joh uid=1008 group=adm"

#示例二、创建jon用户,登录shell是/sbin/nologin,追加bin,sys两个附件组

[root@m01 ~]# ansible nfzl -m user -a "name=jon shell=/sbin/nologin groups=bin,sys"

#示例三、创建jsm用户,为其添加talent作为登录密码,并且创建家目录

[root@m01 ~]# ansible nfzl -m debug -a "msg={{'talent' | password_hash('sha512','salt')}}"

192.168.1.171 | SUCCESS => {

    "msg": "$6$salt$MUVhjPhKyI2uE9sPg7185PcBQFlDwLGPbVTx.CsD6GXQbRGsUfmjsSfb9e9ej2.vLgmBI5CtgFq1plbD0a6tM."

}

[root@m01 ~]#ansible nfzl -m user -a "name=jsm password=$6$salt$MUVhjPhKyI2uE9sPg7185PcBQFlDwLGPbVTx.CsD6GXQbRGsUfmjsSfb9e9ej2.vLgmBI5CtgFq1plbD0a6tM create_home=yes"

#示例四、移除joh用户 (state=ansent且remove=yes,删除用户同时删除家目录)

[root@m01 ~]# ansible nfzl -m user -a "name=xuyong state=absent remove=yes"

#示例五  创建用户httpd 并用户生成 ssh 密钥对

[root@m01 ~]# ansible nfzl -m user -a 'name=httpd generate_ssh_key=yes ssh_key_bits=2048 ssh_key_file=.ssh/id_rsa'

name -添加和删除的用户名

uid —指定用户的uid

group —指定用户的组名

groups —指定附加组名称

password —给用户添加密码

shell —指定用户登录的shell

create_home —是否创建家目录

remove  -是否创建家目录yes\no

5.7 group模块

Examples

#示例一、创建news基本组,指定uid为678

[root@m01 ~]# ansible nfzl –m group –a “name=news gid=678 state=present”

#示例二、创建http系统组,指定uid为778

[root@m01 ~]# ansible nfzl –m group –a “name=http gid=778 system=true state=present”

#示例三、删除基本组news

[root@m01 ~]# ansible nfzl –m group –a “name=news  state=absent”

name ——指定创建的组名

gid ——指定组的gid

state

absent ——移除远端主机的组

present ——创建远端主机的组(default)

system  ——yes、no(default)是否创建系统组

5.8 cron模块

定时计划任务模块

Examples

#示例一、添加定时任务。每分钟执行一次/server/scripts/change_passwd.sh

[root@m01 ~]# ansible nfzl -m cron -a "name=job1 job='/bin/bash /server/scripts/change_passwd.sh'"

#示例二、添加定时任务。每分钟执行一次ls * * * * * ls > /dev/null

[root@m01 ~]# ansible nfzl -m cron -a "name=job2 job='ls > /dev/null'"

#示例三、添加定时任务。每天的凌晨2点和5点执行一次ls * * * * * ls > /dev/null

[root@m01 ~]# ansible nfzl -m cron -a "name=job3 minute=0 hour=5,2 job='ls > /dev/null'"

#示例四、关闭定时任务,使定时任务失效

[root@m01 ~]# ansible nfzl -m cron -a "name=job1  job='/bin/bash /server/scripts/change_passwd.sh' disabled=yes"

name ——备注计划任务,在同样一个计划任务用ansible执行第二次的时候,如果远端主机已经有该相同备注的计划任务时,会不做任何操作,如果没有该计划任务的主机时则会执行,所以一定要加name备注避免重复

disabled ——注释计划任务(yes|no)

minute ——分钟(default *)

hour ——小时(default *)

day ——日(default *)

month ——月(default *)

weekday ——周(default *)

job ——任务

分时日月周都默认为*,在需要的时候可以单独添加

5.9 mount模块

环境准备

1、将192.168.1.172作为nfs服务端,192.168.1.173、192.168.1.174作为客户端挂载

[root@m01 ~]# ansible nfs -m yum -a "name=nfs-utils state=present"

[root@m01 ~]# ansible nfs -m file -a "path=/data state=directory"

[root@m01 ~]# ansible nfs -m copy -a "content='/data 192.168.1.0/24(rw,sync)' dest=/etc/exports"

[root@m01 ~]# ansible nfs -m service -a "name=nfs state=restarted"

挂载模块

Examples

#示例一、仅将挂载的配置写入/etc/fstab, 并不会执行挂载操作

[root@m01 ~]#ansible web -m mount -a "src=192.168.1.172:/data path=/var/www/html fstype=nfs opts=defaults state=present"

#示例二、临时挂载设备,并将挂载信息写入/etc/fstab

[root@m01 ~]#ansible web -m mount -a "src=192.168.1.172:/data path=/var/www/html fstype=nfs opts=defaults state=mounted"

#示例三、临时卸载,不会清理/etc/fstab

[root@m01 ~]#ansible web -m mount -a "src=192.168.1.172:/data path=/var/www/html fstype=nfs opts=defaults  state=unmounted"

#示例四、卸载,不仅临时卸载,同时会清理/etc/fstab

[root@m01 ~]#ansible web -m mount -a "src=192.168.1.172:/data path=/var/www/html fstype=nfs opts=defaults state=absent"

path ——目标挂载目录

src ——挂载源

fstype ——挂载类型

opts ——挂载选项

state ----

absent ——卸载设备,会删除/etc/fstab写入的配置

unmounted ——卸载设备,不会删除/etc/fstab写入的配置

mounted ——挂载设备,将配置写入/etc/fstab

present ——仅将配置写入/etc/fstab,不会挂载设备(开机挂载)

5.10 selinux

关闭selinux

[root@m01 ~]# ansible nfzl -m selinux -a "state=disabled"

5.11 firewalld

[root@m01 ~]# ansible nfzl -m firewalld -a "name=firewalld state=tarted"

Examples

#示例一 永久放行httpds的流量

[root@m01 ~]# ansible nfzl -m firewalld -a "zone=public service=https permanent=yes state=enabled"

#示例二 永久放行8081端口的流量,只有重启才会生效

[root@m01 ~]# ansible nfzl -m firewalld -a "zone=public prot=8080/tcp permanent=yes state=enabled"

#示例三 放行8080-8090的所有TCP端口流量,临时和永久都生效

[root@m01 ~]# ansible nfzl -m firewalld -a "zone=public prot=8080-8090/tcp permanent=yes immediate=yes state=enabled"

5.12 get_url

Examples

#示例一 下载互联网的软件至本地

[root@m01 ~]# ansible nfzl -m get_url -a "http://mirrors.aliyun.com/repo/epel-7.repo" dest=/etc/yum.repos.d/epel.repo

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

推荐阅读更多精彩内容