首页 > 其他分享 >playbook脚本编写

playbook脚本编写

时间:2024-09-22 18:35:42浏览次数:11  
标签:脚本 name vars cfg ansible hosts playbook 编写

playbook脚本文件后缀.yml(.yaml)

作用:找某个主机组[hosts]干某件事[tasks]
- hosts: serversgroup
tasks:

脚本写完做检查语法:(在线效验:https://www.bejson.com/validators/yaml_editor/)
ansible-playbook --syntax playbook.yam
模拟演练检测运行是否报错:
ansible-playbook -C --syntax playbook.yam

 

1.yml语法格式

1)缩进 yaml使用固定缩进表示层结构,每个缩进俩空格,不能使用tab键
2)冒号 以冒号结尾的除外,冒号后必须有空格
3)短横线 表示列表项使用一个短横线加一个空格,多个项使用同样的缩进级别作为同一个列表


2.脚本copy.yml示例
- hosts: servers
tasks:
- name: COPY FILE
copy: src=./hosts.cfg dest=/root backup=yes

测试运行:ansible-playbook -i hosts.cfg --syntax copy.yml
模拟演练:ansible-playbook -i hosts.cfg -C --syntax copy.yml
运行:ansible-playbook -i hosts.cfg copy.yml

 

3.ansible变量

1)定义变量
变量名:值
①通过playbook文件中的play定义(关键字:vars)
vars:
- key1: value1
- key2: value2


示例:
- hosts: servers
vars:
- file_name: file
- file_name2: file
tasks:
- name: COPY FILE
copy: src=/root/ansible/project/{{ file_name }} dest=/root/{{ file_name2 }}


运行:ansible-playbook -i hosts.cfg vars_1.yaml

 

②通过inventory主机清单定义
在同级目录下创建./group_vars 组目录
在同级目录下创建./group_vars/all 文件
文件里写(可直接用)
key1: value1
key2: value2

③通过执行playbook时使用-e指定变量
ansible-playbook -i hosts.cfg vars_1.yaml -e "file_name=file" -e "file_name2=file"


示例:
- hosts: "{{ serversgroup }}"
tasks:
- name: COPY FILE
copy: src=/root/ansible/project/file dest=/root/file
运行:ansible-playbook -i hosts.cfg vars_2.yaml -e "serversgroup=servers"


2)变量优先级

①-e 外置传参
②playbook(vars_files --> vars)
③inventory(host_vars --> group_vars/group_name --> group_vars/all)

 

4.register变量(变量注册)
ansible-playbook 不会返回显示结果

例如:
这条命令可以返回结果
命令:ansible servers -m shell -a 'ss -ntlp|grep nginx' -i hosts.cfg

但是下面不会返回结果
- hosts: servers
tasks:
- name: COPY FILE
shell: ss -ntlp|grep nginx
命令:ansible-playbook -i hosts.cfg reguster.yaml

1)示例:msg字典形式
(把结果存进变量check_nginx,使用debug模块打印出来)
- hosts: servers
tasks:
- name: COPY FILE
shell: ss -ntlp|grep nginx
register: check_nginx
- name: OUTPUT Varuabkes
debug:
msg: "{{ check_nginx }}"

命令:ansible-playbook -i hosts.cfg reguster.yaml

改进:(打印某一处 使用.)
- hosts: servers
tasks:
- name: COPY FILE
shell: ss -ntlp|grep nginx
register: check_nginx
- name: OUTPUT Varuabkes
debug:
msg: "{{ check_nginx.stdout }}"


5.facts变量(默认是开启的,采集被控端状态指标 IP 主机名称 cpu信息 内存 等等 )
查看获取的指标信息及使用变量
ansible servers -i hosts.cfg -m setup
过滤查找某个(只能一层,不支持.)
ansible servers -i hosts.cfg -m setup -a "filter=ansible_lsb"

1)示例:打印使用的系统
- hosts: servers
tasks:
- name: OUTPUT Varuabkes facts
debug:
msg: "{{ ansible_lsb.description }}"

命令:ansible-playbook -i hosts.cfg facts.yaml

2)示例:打印多个变量内容
- hosts: servers
tasks:
- name: OUTPUT Varuabkes facts
debug:
msg: "{{ ansible_lsb.description }} and {{ ansible_default_ipv4.address }}"


3)示例:修改某个配置文件里面的某处为自己的主机名(template模块和copy使用一样,但会把变量转换)
echo 'hostname={{ ansible_fqdn }} ' > test.test

- hosts: servers
tasks:
- name: change configure file
template: src=./test.test dest=/root

命令:ansible-playbook -i hosts.cfg facts.yaml


6. 修改主机名
- hosts: servers
tasks:
- name: check hostname
hostname: name=you_name

 

标签:脚本,name,vars,cfg,ansible,hosts,playbook,编写
From: https://www.cnblogs.com/circlecircle/p/18425645

相关文章

  • 5.编写ROS程序
    1.发布者Publisher的编程实现1.1.创建功能包catkin_create_pkglearning_topicroscpprospystd_msgsgeometry_msgsturtlesim1.2.创建发布者代码(C++)#include<ros/ros.h>#include<geometry_msgs/Twist.h>intmain(intargc,char**argv){//节点初始化......
  • GEE 案例:如何利用LST脚本快速计算指定区域的LST和时序的LST
    目录简介代码单景LST代码Landsat LST时序结果引用引入的脚本ASTERemissivityLST脚本TPW脚本SWM系数SWM算法boardband脚本去云脚本FVC脚本NDVI脚本蒸散发脚本简介地表温度是指地球表面的温度,即地球表面空气与地面接触处的温度。地表温度受多种因素影响,......
  • 推荐一个很酷的脚本工具,几行代码,就能编写有用的 shell 脚本,月猛增 7.4 K Star太牛逼了
     今天给大家介绍的是gum,它是一个很酷的脚本工具。项目介绍gum是一个很棒的脚本工具,提供了高度可配置,随时可用的实用程序,只需几行代码,就能编写有用的shell脚本。让我们构建一个简单的脚本来创建提交。由下面的代码开始:#!/bin/sh询问gumchoose的提交类型:gum ch......
  • Shell脚本编程基础(四)
    五种常用文本工具和Crontab调度工具(一)cut:用于从文本中提取特定的字段或列。grep:用于搜索文本中的特定模式。awk:用于处理和分析文本。sed:用于文本替换和编辑。sort:用于对文本行进行排序。CrontabCrontab是用于定时任务调度的工具,可以用来定期执行脚本或命令。......
  • Shell脚本编程基础(一)
    LinuxShell编程入门在Linux系统中,Shell是一个重要的工具,它充当应用程序与计算机内核的交互桥梁。本文将介绍Shell编程的一些基本知识,并通过实例帮助你更好地理解和使用它。什么是Shell?Shell是一种解释型的编程语言,通过解释器将代码翻译成计算机可理解的语言。在......
  • 全网最全挂机掘金脚本合集,单机一天壹张+无压力
    摘要本文介绍了一款功能丰富的挂机型脚本软件,该软件支持多种平台的自动化操作项目概述当前市场上,挂机型脚本软件种类繁多,功能齐全。本软件集成了多种平台的自动化脚本,包括微信阅读、卷轴平台、广告掘金、自动养机、短视频挂机等。用户只需下载一款软件,即可享受多达十几......
  • 全网最全挂机掘金脚本合集,单机一天壹张+无压力
    摘要本文介绍了一款功能丰富的挂机型脚本软件,该软件支持多种平台的自动化操作项目概述当前市场上,挂机型脚本软件种类繁多,功能齐全。本软件集成了多种平台的自动化脚本,包括微信阅读、卷轴平台、广告掘金、自动养机、短视频挂机等。用户只需下载一款软件,即可享受多达十几......
  • 一款批量下载 B 站动态页图片的脚本
    在逛B站的时候,总能看到不少UP会发很多图片,此时一个一个保存非常麻烦,而且文件名都是随机的字符串,还得手工重命名。为此,特地搜索了下有没相关的浏览器插件或油猴脚本,还真给我找到一个。脚本地址:https://greasyfork.org/zh-CN/scripts/421885​‍‍安装后,重新刷新网页,即可......
  • 在 WordPress 中排队 CSS 和 JS 脚本以获得更好的性能
    wordpress是开源软件–用户可以按照自己的意愿安装、修改和分发它。由于每个人都可以访问源代码,数百万wordpress专家和开发人员可以创建工具和扩展并与公众分享。让我们看看如何将css和js文件加入到你的wordpress项目中。大多数新开发者都喜欢,里面“header.php”<ti......
  • 【油猴脚本】00011 案例 Tampermonkey油猴脚本,动态渲染表格-实现页面动态-添加提取数
    前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦......