# ad-hoc篇
时间:2020-11-30
本文章向大家介绍# ad-hoc篇,主要包括# ad-hoc篇使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、--list-hosts
# 查看所有配置主机
ansible all --list-hosts
#查看tt主机组主机
ansible tt --list-hosts
2、shell模块
- 语法: ansible [主机组] -m shell -a '[参数]'
- 注:复杂命令会有出错得可能,解决方法:写道脚本,copy到远程,执行,将结果拉回执行命令的服务器
- 示例:
[root@node110 ~]# ansible tt -m shell -a 'getent passwd nginx'
192.168.1.103 | CHANGED | rc=0 >>
nginx:x:502:502::/home/nginx:/bin/nologin
192.168.1.104 | CHANGED | rc=0 >>
nginx:x:995:993:nginx user:/var/cache/nginx:/sbin/nologin
3、copy模块
- 语法一:ansible [主机组] -m copy -a 'src=[源文件|路径] dest=[目标文件|路径] owner=[用户,非必填] group=[属组,非必填] mode=[权限,非必填] backup=[yes|no,默认为no,非必填]'
语法二:ansible [主机组] -m copy -a "content='[文本]' dest='[目标文件|路径]'" - 示例:
ansible 192.168.1.103 -m copy -a 'src=/usr/local/src/1.sh dest=/usr/local/src/1.sh owner=node103 \
group=node103 mode=777 backup=yes'
ansible 192.168.1.104 -m copy -a "content='Hello World\n' dest='/tmp/1.log'"
4、file模块
- 语法:ansible [主机组] -m file -a 'name=[文件|路径] state=[动作] owner=[属主] mode=[权限,如755]'
- 示例:
#创建f3文件
ansible tt -m file -a 'name=/tmp/f3 state=touch'
#删除f3文件
ansible tt -m file -a 'name=/tmp/f3 state=absent'
#创建dir1目录
ansible tt -m file -a 'name=/tmp/dir1 state=directory'
#删除dir1目录
ansible tt -m file -a 'name=/tmp/dir1 state=absent'
#创建链接
ansible tt -m file -a 'src=/etc/fstab name=/tmp/fstab.link state=link'
#删除链接
ansible tt -m file -a 'name=/tmp/fstab.link state=absent'
#删除tmp目录
ansible tt -m file -a 'name=/tmp/ state=absent'
5、hostname模块
- 语法:ansible [主机组] -m hostname -a 'name=[主机名]'
- 注:修改主机名,c6系列配置放在/etc/sysconfig/network,c7系列放在/etc/hostname,同时修改/etc/hosts
- 示例:
ansible 192.168.1.103 -m hostname -a 'name=node103'
6、cron模块
- 示例:
# 设置名为warningcron的计划任务,执行时间每周一、三、五的12:00,执行脚本/usr/bin/wall FBI warning
ansible all -m cron -a 'minute=00 hour=12 weekday=1,3,5 job="/usr/bin/wall FBI warning" name=warningcron'
# 名为warningcron的计划任务置为无效
ansible all -m cron -a 'disabled=yes job="/usr/bin/wall FBI warning" name=warningcron'
# 恢复名为warningcron的计划任务
ansible all -m cron -a 'disabled=no job="/usr/bin/wall FBI warning" name=warningcron'
# 删除名为warningcron的计划任务
ansible all -m cron -a 'job="/usr/bin/wall FBI warning" name=warningcron state=absent'
7、script模块
- 示例:
ansible tt -m script -a '/usr/local/src/1.sh'
8、debug模块
- debug模块的msg或var一般配合register输出信息
# 示例:register结合msg
[root@node110 yml]# cat 1.yml
---
- hosts: test
remote_user: root
tasks:
- name: install pkg
shell: df -h
register: df_out
when: ansible_default_ipv4.address == "192.168.1.103"
- name: print df_out
debug: msg={{ df_out.stdout_lines }}
[root@node110 yml]# ansible-playbook 1.yml
PLAY [test] *********************************************************************************************************
TASK [Gathering Facts] **********************************************************************************************
ok: [192.168.1.103]
ok: [192.168.1.104]
TASK [install pkg] **************************************************************************************************
skipping: [192.168.1.104]
changed: [192.168.1.103]
TASK [print df_out] *************************************************************************************************
ok: [192.168.1.103] => {
"msg": [
"Filesystem Size Used Avail Use% Mounted on",
"/dev/mapper/VolGroup-lv_root 18G 2.1G 15G 13% /",
"tmpfs 491M 0 491M 0% /dev/shm",
"/dev/sda1 485M 34M 426M 8% /boot"
]
}
fatal: [192.168.1.104]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'dict object' has no attribute 'stdout_lines'\n\nThe error appears to be in '/usr/local/src/ansible/yml/1.yml': line 9, column 7, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n when: ansible_default_ipv4.address == \"192.168.1.103\"\n - name: print df_out\n ^ here\n"}
PLAY RECAP **********************************************************************************************************
192.168.1.103 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.168.1.104 : ok=1 changed=0 unreachable=0 failed=1 skipped=1 rescued=0 ignored=0
# 示例:register结合var
[root@node110 yml]# cat 4.yml
---
- hosts: test
remote_user: root
tasks:
- name: install pkg
shell: df -h
register: df_out
when: ansible_default_ipv4.address == "192.168.1.103"
- name: print df_out
debug: var=df_out.stdout_lines
[root@node110 yml]# ansible-playbook 4.yml
PLAY [test] *********************************************************************************************************
TASK [Gathering Facts] **********************************************************************************************
ok: [192.168.1.103]
ok: [192.168.1.104]
TASK [install pkg] **************************************************************************************************
skipping: [192.168.1.104]
changed: [192.168.1.103]
TASK [print df_out] *************************************************************************************************
ok: [192.168.1.103] => {
"df_out.stdout_lines": [
"Filesystem Size Used Avail Use% Mounted on",
"/dev/mapper/VolGroup-lv_root 18G 2.1G 15G 13% /",
"tmpfs 491M 0 491M 0% /dev/shm",
"/dev/sda1 485M 34M 426M 8% /boot"
]
}
ok: [192.168.1.104] => {
"df_out.stdout_lines": "VARIABLE IS NOT DEFINED!"
}
PLAY RECAP **********************************************************************************************************
192.168.1.103 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.168.1.104 : ok=2 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
原文地址:https://www.cnblogs.com/ly447742/p/14061411.html
- MapX中实现友好的交互
- 170个城市网约车车辆准入条件大数据报告
- 测试人员的“偷懒大法”
- Flash背景透明的代码
- Maven私服Nexus3.x环境构建操作记录
- Mapx用xml创建点图层
- 编程语言之间的百舸争流
- Mysql连接错误:Lost connection to Mysql server at 'waiting for initial communication packet'
- 适应现代变化的数据架构
- Linux下修改系统编码的操作记录
- 微信公众平
- linq to xml复习
- web cache server方案比较:varnish、squid、nginx
- Nginx虚拟目录alias和root目录
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 基于NXP i.MX28 MPU的疫情监控平台2-Qt环境搭建
- 基于NXP i.MX28 MPU的疫情监控平台1-交叉编译环境搭建
- API接口设计规范
- 陶瓷PCB电路板到底好在哪?
- Mysql常用函数——告别复杂sql
- Spring Boot读取配置文件的几种方式
- python菜鸟教程 | if else 判断
- Java 语言中十大“坑爹”功能!
- R语言生存分析可视化分析
- 全平台轻量开源verilog仿真工具iverilog+GTKWave使用教程
- R语言时间序列和ARIMA模型预测拖拉机销售的制造案例研究
- Windows10下安装linux子系统学习笔记
- 项目实践 | 从零开始学习Deep SORT+YOLO V3进行多目标跟踪(附注释项目代码)
- [OHIF-Viewers]医疗数字阅片-医学影像-Module: Panel-自定义面板-中-es6-Object.defineProperty()定义属性
- (数据科学学习手札90)Python+Kepler.gl轻松制作时间轮播地图