背景:
当一个服务有多块磁盘的时候,我们需要对系统上磁盘进行分区,可是格式化。如果磁盘多,服务器多 *** 作起来非常麻烦 。
下面这个列子就是获取机器上所有sd的磁盘并进行分区。
(注意:这里有一个bug是,如果机器上有没有分区,直接格式化磁盘一定不要用了。解释下:“正常的一块磁盘比如/dev/sdd。要先分区,删除一个额外的块设备/de/sdd1。然后对这个sdd1进行mkfs。有的人偷懒。直接对/dev/sdd进行mkfs。然后挂载就会变成/dev/sdd 没有分区编号” 再执行这个task就会对这个磁盘重新进行分区。后果就是原来的磁盘的数据都丢了 )
逐步分析:
with_dict: "{{ ansible_device_linksids }}"
这步就是通过fact获取机器上的磁盘信息。
元数据大概是这样的
通过ansible_device_linksids 这个变量能直接获取到磁盘相关的字典表。然后实用with_dict 直接循环ansible_device_linksids 字典变量。得到类似这样的数据格式
我们只要获取key即可得到想要的磁盘编号信息。
但是key会有已经分区过的磁盘编号,比如第二条sdx3 类似这种。
对itemkey 进行过滤。后面的表达式为真的继续执行。
表达式的意思sd两个字母后面是b到w结尾。
因为我已经已知sda 和sdx 不是我想要的磁盘。
目录
一、常用命令使用
二、双引号" " 单引号' '对执行结果的影响
三、ansible-console工具
四、ansible常用模块
一、常用命令使用
前面有提到过ansible的常用的命令和使用
列出要执行主机
ansible all --list-hosts
批量检测主机
ansible all -m ping -k
ansible主机集合 -m 模块名称 -a 模块参数
主机集合 主机名或分组名,多个使用"逗号"分隔
-m 模块名称,默认command模块
-a or --args模块参数
其它参数
-i inventory文件路径,或可执行脚本
-k 使用交互式登陆密码
-e 定义变量
-v 显示详细信息
二、双引号" " 单引号' '对执行结果的影响
执行以下命令来查看ansible的执行结果
1)shell
ansible web -m shell -a "echo ${HOSTNAME}"
ansible web -m shell -a 'echo ${HOSTNAME}'
2)创建的文件在哪查看
ansible cache -m shell -a 'cd /tmp'
ansible cache -m shell -a 'touch testfile'
注:
1)变量解析 双引号"" 与单引号''使用区别
ansible 执行命令是二次解析,第一次在本机解析, 第二次在执行机器解析,需要第二次解析的变量要转移
总结: 参数默认使用 ' ' 号就对了
2)创建的文件在哪里
文件在用户家目录,ansible 是使用 ssh 多次连接执行,连接退出以后之前的状态就全部失效了
解决方法:使用 chdir 代替 cd 命令
ansible cache -m shell -a 'chdir=/tmp touch testfile'
三、ansible-console工具
是ansible为用户提供的交互式工具,用户可以在ansible-console虚拟出来的终端出来的终端上像shell一样使用ansible内置的各种命令,这为习惯使用shell交互方式的用户提供了良好的使用体验
四、ansible常用模块
41 ) ansible-doc和ping模块
ansible-doc模块手册
模块的手册相当于shell的man,很重要
ping模块
测试网络连通性,ping模块没有参数
注:测试ssh连通性
42 ) command模块
默认模块,远程执行命令
用法
command模块注意事项:
该模块通过-a跟上要执行的命令可以直接执行,若命令里有如下字符则执行不成功
"<" ">" "|" "&"
command模块不能解析系统变量
该模块不启动shell直接在ssh进程中执行,所有使用到shell的命令执行都会失败
查看所有机器负载
查看日期和时间
43 )shell模块
shell模块用法基本和command一样,区别是shell模块是通过/bin/sh进行执行命令,可以执行任意命令
不能执行交互式的命令,例如 vim top等
44 ) script模块
命令太复杂
在本地写脚本,然后使用script模块指量执行
ansible web -m script -a 'urscript'
注意:该脚本包含但不限于shell脚本,只要指定sha-bang解释器的脚本都可运行
案例:
给所有web主机添加用户wk
1要求by用户与wk用户不能出现在同一台主机上
2设置wk用户的密码是456
45 ) yum模块
使用yum包管理器来管理软件包
name:要进行 *** 作的软件包名字
state:动作(installed安装、removed删除)
46 ) service模块
name:必须项,服务名称
enabled:是否开机启动yes|no
sleep:执行restarted,会在stop和start之间沉睡几秒钟
state:对当时服务执行启动、停止、重启中、重新加载等 *** 作(started,stopped,restarted,reloaded)
案例:
1给db组安装mariadb
2开启mariadb服务并设置开机启动
47 ) copy模块
复制文件到远程主机
src:复制本地文件到远程主机,绝对路径和相对路径都可以,路径为目录时会递归复制,若路径以"/"结尾,只复制目录里的内容,若不以"/"结尾,则复制包含目录在内的整个内容,类似于rsync
dest:必须项,远程主机的绝对路径,如果源文件是一个目录,那该路径必须是目录
backup:覆盖前先备份原文件,备份文件包含时间信息,有两个选项:yes|no
force:若目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,设为no,则只有当目标主机的目标位置不存在该文件时才复制,默认为yes
案例:
拷到本机/etc/resolvconf 文件到所有拖管主机 并对原文件备份
给所有 db 主机开启 binlog 日志
48 ) lineinfile模块 replace模块
类似sed的一种行编辑替换模块
path 目标文件文件
regexp 正则表达式,要修改的行
line 最终修改的结果
replace模块
类似sed的一种行编辑替换模块
path 目标文件文件
regexp 正则表达式,要修改的行
replace 替换后的结果
lineinfile模块与 replace模块区别
lineinfile模块 是修改某个文件的单行并进行替换
replace模块 是修改某个文件的所有匹配行并进行替换
49 ) setup模块
主要用于获取主机信息,playbooks里经常会用的另一个参数gather_facts与该模块相关,setup模块下经常用的是filter参数
filter过滤所需信息
执行以下命令可查看包含的所有信息,可大致浏览一遍,包含的信息,
需要注意的是 filter过滤条件必须以信息中模块名为过滤条件 模块中详细信息不能为过滤条件
获取风资源配置文件的方法有很多,具体取决于您想要获取的资源的类型。
首先,如果您想获取的是一个已经存在的风资源配置文件,那么您可以从网络上的资源库中获取,比如Github、Bitbucket等等。
其次,如果您想自己创建一个风资源配置文件,那么您可以使用各种编程语言来编写,比如Java、Python、Nodejs等等。
最后,如果您打算使用配置管理工具来管理风资源配置文件,那么您可以使用配置管理工具来实现,比如Puppet、Ansible、Chef等等。
总之,获取风资源配置文件可以根据您的需求采用不同的方式,以上是一些可以用来获取风资源配置文件的常见方法。
Ansible是一个自动化管理IT资源的工具。
系统环境配置
安装软件
持续集成:自动化部署
热回滚
无客户端
推送式
丰富的第三方module,大概1W多个
基于YAML的Playbook
商业化的支持
效率低,易挂起:基于ssh通信
并发性能差
环境准备
Python
Setuptools
pip(可选): pip install ansible
git clone >
以上就是关于ansible获取集群上的未分区的磁盘全部的内容,包括:ansible获取集群上的未分区的磁盘、ansible使用笔记(二)常用命令使用及常用模块简介、风资源配置文件如何取得等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)