ansible第三天

创建文件

[root@server ~]# ansible  web  -m  file  -a  'path=/file.txt  owner=redhat  mode=0000 setype=default_t  state=touc

 创建软连接

 删除链接

copy模块 

src 参数 :用于指定需要 copy 的文件或目录
dest 参数 :用于指定文件将被拷贝到远程主机的哪个目录中, dest 为必须参数
content 参数 :当不使用 src 指定拷贝的文件时,可以使用 content 直接指定文件内容, src 与
content 两个参数必有其一,否则会报错。
force 参数 : 当远程主机的目标路径中已经存在同名文件,并且与 ansible 主机中的文件内容不同时,是否强制覆盖,可选值有 yes 和 no ,默认值为 yes ,表示覆盖,如果设置为 no ,则不会执行覆 盖拷贝操作,远程主机中的文件保持不变。
backup 参数 : 当远程主机的目标路径中已经存在同名文件,并且与 ansible 主机中的文件内容不同时,是否对远程主机的文件进行备份,可选值有 yes 和 no ,当设置为 yes 时,会先备份远程主机中的 文件,然后再将 ansible 主机中的文件拷贝到远程主机。
owner 参数 : 指定文件拷贝到远程主机后的属主,但是远程主机上必须有对应的用户,否则会报错。
group 参数 : 指定文件拷贝到远程主机后的属组,但是远程主机上必须有对应的组,否则会报错。
mode 参数 : 指定文件拷贝到远程主机后的权限,如果你想将权限设置为 "rw-r--r--" ,则可以使用mode=0644 表示,如果你想要在 user 对应的权限位上添加执行权限,则可以使用 mode=u+x 表 示。
 

复制文件 

fetch 模块---拉取远程主机的文件 

dest 目标地址

src 源

flat yes 不按照 src 的目录来创建目录, flat 为 no 就在当前路径创建和 src 一样的目录路径

 将/p1目录和目录文件同步到/p2(-avz --- 打包操作) 

 

将p1目录中文件数据同步到p2且删除p2源文件(注意/p1 和 /p1/的区别)

控制端(server)目录下文件向受控端(node2)目录下文件保持一致

blockinfile模块---插入"一段文本"


path 参数 :必须参数,指定要操作的文件。
[root@master ~]# ansible webservers -m fetch -a 'src=/etc/hosts dest=/opt'
[root@master ~]# ll /opt/
总用量 0
drwxr-xr-x. 3 root root 17 3 月 3 21:25 node1.kongd.com
drwxr-xr-x. 3 root root 17 3 月 3 21:25 node2.kongd.com
drwxr-xr-x. 3 root root 17 3 月 3 21:25 node3.kongd.com
[root@master ~]# ansible node3.kongd.com -m fetch -a 'src=/etc/hosts
dest=/opt/hosts flat=yes'
[root@master ~]# ansible node1.kongd.com -m synchronize -a 'src=/etc/hosts
dest=/tmp mode=pull'
注意: mode 默认为 push ,要拉取到主控节点,需要配置 mode 为 pull
[root@master ~]# ansible node1.kongd.com -m synchronize -a "src=/tmp/ dest=/mnt
archive=yes delete=yes rsync_opts=--excloud=*.txt "
block 参数 :此参数用于指定我们想要操作的那 " 一段文本 " ,此参数有一个别名叫 "content" ,使用content 或 block 的作用是相同的。
marker 参数 :假如我们想要在指定文件中插入一段文本, ansible 会自动为这段文本添加两个标记,一个开始标记,一个结束标记,默认情况下,开始标记为 # BEGIN ANSIBLE MANAGED BLOCK ,结束标记为 # END ANSIBLE MANAGED BLOCK ,我们可以使用 marker 参数自定义 " 标 记 " ,比如, marker=#{mark}test ,这样设置以后,开始标记变成了 # BEGIN test ,结束标记变成 了 # END test ,没错, {mark} 会自动被替换成开始标记和结束标记中的 BEGIN 和 END ,我们也可以 插入很多段文本,为不同的段落添加不同的标记,下次通过对应的标记即可找到对应的段落。
state 参数 : state 参数有两个可选值, present 与 absent ,默认情况下,我们会将指定的一段文本 " 插入 " 到文件中,如果对应的文件中已经存在对应标记的文本,默认会更新对应段落,在执行插 入操作或更新操作时, state 的值为 present ,默认值就是 present ,如果对应的文件中已经存在对 应标记的文本并且将 state 的值设置为 absent ,则表示从文件中删除对应标记的段落。
insertafter 参数 :在插入一段文本时,默认会在文件的末尾插入文本,如果你想要将文本插入在某一行的后面,可以使用此参数指定对应的行,也可以使用正则表达式 (python 正则 ) ,表示将文本 插入在符合正则表达式的行的后面,如果有多行文本都能够匹配对应的正则表达式,则以最后一个 满足正则的行为准,此参数的值还可以设置为 EOF ,表示将文本插入到文档末尾。
insertbefore 参数 :在插入一段文本时,默认会在文件的末尾插入文本,如果你想要将文本插入在某一行的前面,可以使用此参数指定对应的行,也可以使用正则表达式 (python 正则 ) ,表示将文 本插入在符合正则表达式的行的前面,如果有多行文本都能够匹配对应的正则表达式,则以最后一 个满足正则的行为准,此参数的值还可以设置为 BOF ,表示将文本插入到文档开头。
backup 参数 :是否在修改文件之前对文件进行备份。
create 参数 :当要操作的文件并不存在时,是否创建对应的文件。
 

1. 将 /etc/rc.d/rc.local 文件复制到 /testdir 目录中,以做测试假如,我们想要在 test70 主机中
的 /testdir/rc.local 文件尾部插入如下两行
systemctl start mariadb
systemctl start httpd
#ansible test70 -m blockinfile -a 'path=/testdir/rc.local block="systemctl start
mariadb\nsystemctl start httpd"'
#BEGIN ANSIBLE MANAGED BLOCK
systemctl start mariadb
systemctl start httpd
\# END ANSIBLE MANAGED BLOCK


2. 我们也可以自定义标记,但是自定义的标记仍然要 " 成对出现 " ,需要有开始标记和结束标记
#ansible test70 -m blockinfile -a 'path=/testdir/rc.local block="systemctl start
mariadb\nsystemctl start httpd" marker="#{mark} serivce to start" '
#BEGIN serivce to start
systemctl start mariadb
systemctl start httpd
#END serivce to start


3. 当文本块标记已存在,但再次编辑内容会覆盖原标记中的内容
#ansible test70 -m blockinfile -a 'path=/testdir/rc.local block="systemctl start
mariadb" marker="#{mark} serivce to start" '
文本块的内容被更新为如下文本。
#BEGIN serivce to start
systemctl start mariadb
#END serivce to start


4. 删除对应标记文本块
当文本块为空时删除对应标记文本块
#ansible test70 -m blockinfile -a 'path=/testdir/rc.local block="" marker="#
{mark} serivce to start" '
#ansible test70 -m blockinfile -a 'path=/testdir/rc.local marker="#{mark}
serivce to start" state=absent'


5. 将文本块插入到文档的开头,可以使用 insertbefore 参数,将其值设置为 BOF , BOF 表示 Begin Of File
ansible test70 -m blockinfile -a 'path=/testdir/rc.local block="####blockinfile
test####" marker="#{mark} test" insertbefore=BOF'


6. 如果使用如下命令,表示将文本块插入到文档的结尾,与默认操作相同,将 insertafter 参数设置为 EOF表示 End Of File
#ansible test70 -m blockinfile -a 'path=/testdir/rc.local block="####blockinfile
test####" marker="#{mark} test" insertafter=EOF'


7. 使用如下命令表示使用正则表达式匹配行,将文本块插入到 " 以 #!/bin/bash 开头的行 " 之后
ansible test70 -m blockinfile -a 'path=/testdir/rc.local block="####blockinfile
test####" marker="#{mark} test reg" insertafter="^#!/bin/bash" '


8. 使用 backup 参数,可以在操作修改文件之前,对文件进行备份,备份的文件会在原文件名的基础上添加时间戳
ansible test70 -m blockinfile -a 'path=/testdir/rc.local marker="#{mark} test"
state=absent backup=yes'


9. 使用 create 参数,如果指定的文件不存在,则创建它,示例如下
ansible test70 -m blockinfile -a 'path=/testdir/test block="test" marker="#{mark}
test" create=yes'
 

 Service/systemd模块


name 参数:此参数用于指定需要操作的服务名称,比如 nginx 。
state 参数:此参数用于指定服务的状态,比如,我们想要启动远程主机中的 nginx ,则可以将state 的值设置为 started ;如果想要停止远程主机中的服务,则可以将 state 的值设置为
stopped 。此参数的可用值有 started 、 stopped 、 restarted 、 reloaded 。
enabled 参数:此参数用于指定是否将服务设置为开机 启动项,设置为 yes 表示将对应服务设置为 开机启动,设置为 no 表示不会开机启动
arguments: 给命令提供一些选项
ansible all -m service -a "name=network state=restarted args=eth0"
runlevel : 运行等级
sleep: 如果运行看 restarted 则 stop and start 之间沉睡几秒中
pattern :定义一个模式,如果通过 status 指令来查看服务的状态时,没有响应,就会通过 ps 指令在进程中根据该模式进行查找,如果匹配到,则认为该服务依然在运行

 防火墙
firewalld 模块


State 指防火墙策略 enable disable present absent
service 指定服务
immediate 立即启用
port 端口 port=80/tcp
permanent 永久生效

selinux模块


功能:管理远端主机的 SELINUX 防火墙;
参数
state Selinux 模式: enforcing 、 permissive 、 disabled
policy targeted
 

 uri模块 curl http://localhost -k -u tom: --- 获取网页信息

url= 指明请求的 url 的路径,如: http://10.1.32.68/test.jpg
user= 如果请求的 url 需要认证,则认证的用户名是什么
password= 如果请求的 url 需要认证,则认证的密码是什么
method= 指明请求的方法,如 GET 、 POST…
body= 指明报文中实体部分的内容,一般是 POST 方法或 PUT 方法时用到HEADER_ 自定义请求报文中的添加的首部
return_content: 是否将返回主体作为字典中的 "content" 值返回
validate_certs: 如果 “ 否 ” ,则不会验证 ssl 证书。这应该只设置为 “ 否 ” 使用个人控制的网站使用自签名证书。
Force_basic_auth:
根据初始请求强制发送基本身份验证标头。 Uri 模块使用的库仅在 webservice 以 401 状态响应初始请求
时发送身份验证信息。由于一些基本的认证服务没有正确地发送 401 ,登录将失败
url: http://......
validate_certs: no
force_basic_auth: yes
user=redhat
password=web_pass
return_content: yes 返回 content ,默认不显示
status_code: 200 正确状态值 200
[ root@server ~ ] # ansible localhost -m uri -a 'url=http://localhost return_content=yes status_code=404' --- status_code指预判断的结果为404,也可以写200,如果结果和预判断的不一样则会显示红色错误结果,但是并不是语法错误,不影响
 

磁盘管理

mount模块

fstype :必选项,挂载文件的类型
path :必选项,挂载点
opts :传递给 mount 命令的参数
src :必选项,要挂载的文件系统
state :必选项 present :只处理 fstab 中的配置 absent
        挂载点mounted
        unmounted:卸载
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值