ansible --第一天(基础模块)

ansible是啥?
是一款自动化运维工具的名称。
ansible架构?
1) 控制端
2) 被控端
3) 连接协议-ssh
4) inventory
5) ad-hoc
6) playbook
ansible工作流程:

QQ截图20200514093314.png

一个管理主机,对需要管理的服务器做一个逻辑分类。
通过组件inventory(主机清单)对host(单个主机),group(多个组机)通过动作
ad-hoc(单模块) playbook(剧本,多模块),在通过modules(模块)的ssh/tcp的网络安全连接到对应的服务器,然后服务器进行本地解析,本地运行。
之间都是通过python的方式。并且所有的指令都是模块。


ansible 环境
安装 yum install ansible (2.9版本)
配置文件
查找的时候有顺序:
1.$ANSIBLE_CONFIG
2.当前目录下的ansible.cfg
3.当前用户家目录下的.ansible.cfg
4.查找/etc/ansible/ansible.cfg


Ansible Inventory 主机清单
通过ansible,控制两台同时登陆
1.定义主机清单
[root@manager ~]# cat /etc/ansible/hosts
[webservers] 类似资源池,操作是以下两个ip
172.16.1.7
172.16.1.8
2.推送公钥到各个节点
ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.7
ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.8
3.执行ansible ad-hoc 测试 是否能与该清单定义的节点通讯
[root@manager ~]# ansible webservers -m ping

抒写主机清单,选择登陆方式?
1.密码登陆
[webservers]
172.16.1.31 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'
2.秘钥的方式
[webservers]
172.16.1.31 或 web01 ansible_ssh_host=172.16.1.7或 172.16.1.7 hostname=web01
3.其他方式
[webservers]
web[1:99].oldboy.com 直接控制所有1--99


练习:(公司做项目,推荐)
1.创建一个项目目录
[root@manager ~]# mkdir /ansible_adhoc
2.在该项目下创建ansible.cfg、hosts
进入目录
[root@manager ~]# cd /ansible_adhoc/
创建ansible.cfg
[root@manager ansible_adhoc]# touch ansible.cfg
创建hosts
[root@manager ansible_adhoc]# touch hosts
编写ansible.cfg文件
[root@manager ansible_adhoc]# cat ansible.cfg
[defaults] 定义加载位置
inventory = ./hosts 加载的是当前的hosts这个文件
编写hosts文件
[root@manager ansible_adhoc]# cat hosts
[webservers]
web01 ansible_ssh_host=172.16.1.7
web02 ansible_ssh_host=172.16.1.8

3.ansible --version 查看加载的是哪个配置文件

[root@manager ansible_adhoc]# ansible --version
ansible 2.9.7 ansible 版本
config file = /ansible_adhoc/ansible.cfg
加载文件的位置,在我们创建的目录下
4.最后在该目录下执行
[root@manager ansible_adhoc]# ansible webservers -m ping
都是可以ping 通的。


模块前提认知:
临时命令,执行后就结束,并不会保存
一般都是查看某多台机器的进程
语法:
ansible webserbers -m 模块 -a '动作'
ansible webservers -m command -a 'df -h'
颜色:
绿色:正常
黄色:被控端发生了更改
红色:报错

ansible ad-hoc模块:
0.命令 command | shell
1.安装 yum | yum_repository
2.配置 copy | file
3.启动 systemd | service
4.挂载 mount
5.定时 cron
6.用户 user | group
7.防火墙 selinux | firewalld


command与shell: 执行命令的模块(Shell)
[root@manager ansible_adhoc]# ansible webservers -m command -a 'ps -ef |grep nginx' (不支持管道)
[root@manager ansible_adhoc]# ansible webservers -m shell -a 'ps -ef |grep nginx' (支持管道)


安装nfs服务任务流程------
安装yum、配置copy、初始化group、user、file、启动systemd、 客户端测试mount

1.yum模块:安装软件
name: 软件包名称
state:
present 安装
absent 卸载
latest 安装最新版
enablerepo:指定通过那个仓库下载
disablerepo:禁止从哪个仓库下载

2.copy模块:文件配置
copy: 拷贝当前目录下的文件到被控端指定的路径

src 要拷贝的文件(相对路径 绝对路径)
dest    拷贝到目标主机的哪个路径下
owner   设定文件的属主
group   设定文件的数组
mode    设定文件的权限
backup  备份(只有有变化时候会做备份)
content 往目标主机文件中增加内容(重定向)

3.group、user模块:创建用户组和用户
group:
state: present、absent
gid:指定gid
user:
name: 用户名称
uid: uid
group:指定组
groups:指定附加组 append = yes
shell: 指定登陆shell
create_home: 创建用户家目录
state
present 创建
absent 删除
remove:移除用户相关的文件

4.file模块: ( 创建文件或、目录、授权 )
path:指定被控端的路径
state:
touch
directory
link
owner:属主 默认root
group:属组 默认root
mode:文件默认644、目录755
recurse:递归授权

5.启动systemd | service (一摸一样的模块)
name: 服务名称 nfs | httpd | nginx
state:
started
reloaded
stopped
restarted
enabled:
yes 加入开机自启动
no 关闭开机自启动

6.客户端测试mount
path: 被控端要挂载的目录 /data
src: 设备| nfs|磁盘| 光盘 /dev/sda1
fstype:
iso9660 光盘
nfs
xfs
opts:
ro,noauto
defaults
state:
mounted:挂载设备,并加入开机自启动
present:写入fstab,不挂载
absent:卸载设备,会清除/etc/fstab
unmounted:卸载,不会清除/etc/fstab
remounted:重新在挂载一次

将这些全部放入到一个脚本,一起执行
[root@manager ansible_adhoc]# vim
nfs_server_client.sh

1.安装 ansible webservers -m yum -a "name=nfs-utils state=present"
2.配置 ansible webservers -m copy -a "src=./exports.j2 dest=/etc/exports owner=root group=root mode=644"
ansible webservers -m group -a "name=www gid=666 state=present"
3.添加用户和组 ansible webservers -m user -a "name=www uid=666 create_home=no shell=/no/login group=www state=present"
4.添加权限 ansible webservers -m file -a "path=/data state=directory owner=www group=www mode=755 recurse=yes"
5.开机自启 ansible webservers -m systemd -a "name=nfs-utils state=started enabled=yes"

6.挂载
ansible client -m mount -a "src=172.16.1.7:/data path=/opt fstype=nfs opts=defaults state=mounted"
ansible client -m mount -a "src=172.16.1.8:/data path=/mnt fstype=nfs opts=defaults state=mounted"

最后:
[root@manager ansible_adhoc]# sh
nfs_server_client.sh (执行一下)

会出现的问题:
1.在配置文件时,一定要创建这个exports.j2 文件
2.在挂载前,在hosts里添加测试客户端。
【client】
172.16.1.31
执行: ansible all -m ping (查看所有主机通不通)
3.在挂载的时候,要看下客户端的目录的权限,属组和属主。
如果挂载出现连接失败,需要在7和8上,启动下nfs

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