RHCEansible 编写playbook---yaml

news2024/9/28 1:25:39

YAML 语言特性

YAML 的可读性好
YAML 和脚本语言的交互性好
YAML使用实现语言的数据类型
YAML 有一个一致的信息模型
YAML 易于实现
YAML 可以基于流来处理
YAML 表达能力强,扩展性好

YAML的三种数据结构

对象:
键值对的集合,又称为映射、哈希、字典 name: username
数组:
一组按次序排列的值,又称为序列 / 列表
纯量:
单个的、不可再分的值
对象:
key :
key1 : vaule1
key2 : vaule2
或者
key : { key1 : value1 , key2 : value2 }
数组:
key :
- value1
- value2
或者: key: [ value1 , value2 ]

arr=(1,2,3,4,5)

arr:

        -1

        -2

        -3

        -4

        -5

流式风格语法

key:{key1:value1,key2:value2}

 YAML语法格式

- 在单一文件第一行,用连续三个连字号 “-” 开始 (---),还有选择性的连续三个点号 ( … ) 用来表示文件的结尾
- 次行开始正常写 Playbook 的内容,一般建议写明该 Playbook 的功能
- 使用 # 号注释代码
- 缩进必须是统一的 ,不能空格和 tab 混用 (以空格的缩进来控制层级关系只要是左对齐的一列数据,都是
同一个层级的,)
- 缩进的级别也必须是一致的,同样的缩进代表同样的级别,程序判别配置的级别是通过缩进结合换行来实现的
YAML 文件内容是区别大小写的, key/value 的值均需大小写敏感
- 多个 key/value 可同行写也可换行写,同行使用,分隔
- v 可是个字符串,也可是另一个列表
- 一个完整的代码块功能需最少元素需包括 name tasks
- 一个 name 只能包括一个 tasks
- YAML 文件扩展名通常为 yml yaml
- 添加注释一定要在#后有个空格--- # 注释

编写yaml

先配置好ansible

[root@server test]# vim ansible.cfg

[root@server test]# vim inventory

[root@server test]# vim test.yml

---
- name: play1
  hosts: node1
  remote_user: root #远程登录用户
  tasks:
    - name: task1
      file:
        path: /new1 #在当前目录创建new1
        state: touch #操作为touch
        mode: 644 #权限为644
        owner: redhat #操作用户为redhat
        group: redhat #所属组为redhat
    - name: task2
      user:
        { name: list1 , uid: 1111 }
    - name: task3
      copy:
        dest: /new1
        content: "this is file"
...

运行playbook(yaml)

 [root@server test]# ansible-playbook test.yml

[root@server test]# ansible-playbook --syntax-check test.yml ---检验playbook语法是否有问题

[root@server test]# ansible-playbook  test.yml -C --- 执行空运算 可以检测将会发生什么更改但是并没有对受管主机进行实际更改  

 

案例:配置web

步骤

1、配置yum源,安装对应服务 http

2、ip通过自定义端口访问网站内容/www

3、创建资源文件

4.重启服务

5、测试

6、防火墙

7、selinux

[root@server test]# vim web.yml

---
- name: configure web server # 配置web服务
  hosts: test2
  tasks:
    - name: mount /dev/sr0
      mount:
        src: /dev/sr0
        path: /mnt
        state: mounted
        fstype: iso9660
    - name: yum repository # 配置yum源---baseos
      yum_repository:
        name: BaseOS
        description: RHEL8-B
        baseurl: file:///mnt/BaseOS
        gpgcheck: no
        file: BaseOS
    - name: yum repository # 配置yum源---appstream
      yum_repository:
        name: AppStream
        description: RHEL8-A
        baseurl: file:///mnt/AppStream
        gpgcheck: no
        file: AppStream
    - name: install httpd # 安装httpd
      dnf:
        name: httpd
        state: latest
    - name: create configure file # 创建配置文件
      copy:
        src: /test/httpd.conf

# 需要先创建文件

[root@server test]# vim httpd.conf

Listen 8909
<Directory /www>
        Allowoverride none
        require granted
</Directory>
<virtualhost *:8909>
        documentroot /www
</virtualhost>


        dest: /etc/httpd/conf.d/vhosts.conf
    - name: mkdir # 创建目录
      file:
        path: /www
        state: directory
    - name: test file # 网页测试文件
      copy:
        dest: /www/ index.html
        content: "helloworld\n"
    - name: start firewall # 启动防火墙
      service:
        name: firewalld
        state: restarted
        enabled: yes
    - name: firewall # 配置防火墙
      firewalld:
        port: 8909/tcp
        permanent: yes
        immediate: yes
        state: enabled
    - name: selinux-python # 安装python3
      yum:
        name:
          - python3-libselinux
          - policycoreutils-python-utils
        state: present
    - name: selinux # 开启selinux
      selinux:
        state: enforcing
        policy: targeted
    - name: configure selinux-port # 配置selinux端口
      seport:
        ports: 8909
        proto: tcp
        setype: http_port_t
        state: present
    - name: selinux # 配置selinux标签
      sefcontext:
        target: '/www(/.*)?'
        setype: httpd_sys_content_t
        state: present
    - name: restart service # 重启服务
      service:
        name: httpd
        state: restarted
        enabled: yes
- name: webtest # 测试web
  hosts: node2
  tasks:
    - name: testnode2
      uri:
        url: http://192.168.171.130
        return_content: yes
        status_code: 200

如果出现python问题就在受控主机上:yum install policycoreutils-python-utils

[root@server test]#vim httpd.conf

 测试

[root@server test]# ansible-playbook web.yml -C --- 不断试错,根据错误改错,最后再实际的运行

[root@server test]# ansible-playbook web.yml

在受控主机上查看

[root@node2 ~]# curl http://192.168.171.130

 

管理变量与事实

命令行引用变量

[root@server test]# vim code.yml

[root@server test]# ansible-playbook -e "pkname=vsftpd" code.yml --- 引用变量

 引用playbook中的变量

 [root@server test]# vim code.yml

[root@server test]# ansible-playbook code.yml -C

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/139702.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Map数据结构详解

Map Object本质上是键值对的集合&#xff08;Hash结构&#xff09;&#xff0c;但Object只能将字符串当做键&#xff0c;这就给Object带来了很大的限制。 let data {} let s {name : 东方不败} data[s] 西方求败// 如果键传入非字符串的值&#xff0c;会自动为字符串 cons…

思科路由器DHCPv6服务配置

配置如下 Router>ena Router#conf t Router(config)#host R1 R1(config)#ipv6 unicast-routing R1(config)#int g0/0 R1(config-if)#ipv6 add 2001:1::1/64 R1(config-if)#no sh R1(config-if)#exit R1(config)#service dhcp R1(config)#ipv6 local pool v6pool …

CTF中的PHP特性函数(中)

前言 上篇文章给大家带来了PHP中最基本的特性&#xff0c;不知道大家学习的怎样了&#xff0c;回顾上文&#xff0c;我们讲了MD5强弱碰撞以及正则匹配的绕过&#xff0c;总体来看还是很简单的&#xff0c;下面给大家带来新的PHP特性讲解&#xff0c;会稍微比上一篇难一些。 i…

开源工作流引擎如何支撑企业级 Serverless 架构?

作者&#xff1a;董天欣&#xff08;雾雾&#xff09; Serverless 应用引擎&#xff08;SAE&#xff09;是一款底层基于 Kubernetes&#xff0c;实现了 Serverless 架构与微服务架构结合的云产品。作为一款不断迭代的云产品&#xff0c;在快速发展的过程中也遇到了许多挑战。如…

2022年统一大市场研究报告

第一章 行业概况 国内统一大市场指的是在全国范围内&#xff0c;在充分竞争以及由此形成的社会分工基础上&#xff0c;各地区市场间、各专业市场间形成了相互依存、相互补充、相互开放、相互协调的有机的市场体系。在这种市场体系下&#xff0c;商品和要素能够按照价格体系的调…

干货 | 在Docker 上搭建持续集成平台 Jenkins

Docker是一个开源的应用容器引擎&#xff0c;基于 Go 语言开发&#xff0c;Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的系统。Docker 是世界领先的软件容器平台&#xff0c;Docker 官方的口号是”调试你的应用&…

Three.js学习(二)three.js的一些基本操作

文章目录1.鼠标操作三维场景旋转、移动和缩放2.场景中添加新的三维图形3.设置材质效果4.光源效果1.鼠标操作三维场景旋转、移动和缩放 使用THREE的OrbitControls控件&#xff0c;可以实现鼠标控制三维图形的操作。主要是通过监听鼠标操作&#xff0c;控制相机的三维参数。 imp…

python数据分析-matplotlib、numpy、pandas

数据分析概述数据分析就是用适当的方法对收集来的大量数据进行分析&#xff0c;帮助人们在一处判断&#xff0c;以便采取适当行动数据分析流程jupyter notebook说明matplotlib&#xff1a;Matplotlib — Visualization with Python基本要点能将数据进行可视化&#xff0c;更直观…

docker基本命令演示

docker拉取redis镜像演示首先前往&#xff1a;https://hub.docker.com找到需要的redis镜像然后 点击之后使用命令 docker pull redis 拉取redis 成功之后使用命令 docker images 查看本地的镜像使用命令导出镜像到指定文件 docker save -o redis.tar redis:latestdocker save…

Android13适配

遇到的一些问题 1.WebChromeClient的 API onReachedMaxAppCacheSize 没了 onReachedMaxAppCacheSize overrides nothing // 扩充缓存的容量override fun onReachedMaxAppCacheSize(spaceNeeded: Long, totalUsedQuota: Long, quotaUpdater: QuotaUpdater) {quotaUpdater.upda…

QT学习笔记(下)

项目实践 前言 本项目的实践主要是以翻金币的项目为例&#xff0c;进行QT项目的实践。游戏分为3个场景&#xff0c;分别是mainscene主场景、chooselevelscene选择关卡场景、playscene游戏场景&#xff0c;以上的三个场景是按顺序实现的。并且定义了两个自定义的QPushButton按…

数据库,计算机网络、操作系统刷题笔记24

数据库&#xff0c;计算机网络、操作系统刷题笔记24 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle…

c++下 ADO+配置数据源连接oracle数据库

测试环境&#xff1a;在本地局域网内远程连接服务器端的oracle数据库&#xff0c;VS2013、ADO方式。2、本地安装oracle数据库客户端&#xff0c;具体是安装32位还是64位的数据库客户端&#xff0c;取决于我们编译的程序是32位的还是64位的&#xff08;和计算机的系统位数没有关…

首款通过! 机器学习服务活体检测算法荣获CFCA权威安全认证

随着人脸识别技术在金融、医疗等多个领域的加速落地&#xff0c;网络安全、信息泄露等问题愈为突出&#xff0c;用户对应用稳定性和安全性的要求也更为严格。为保障各行业高效稳定的开展业务&#xff0c;提前发现和应对潜在安全风险&#xff0c;华为 HMS Core 机器学习服务&…

【回答问题】ChatGPT上线了!给我推荐20个比较流行的图神经网络模型

给我推荐20个比较流行的图神经网络模型 很高兴为您推荐流行的图神经网络模型。这里是我的推荐列表&#xff1a; 卷积神经网络 (CNN) 递归神经网络 (RNN) 自注意力机制 (Transformer) 双向递归神经网络 (BRNN) 门控循环单元 (GRU) 长短期记忆网络 (LSTM) 双流图神经网络 (Bi-D…

鲁大师2022牛角尖颁奖盛典落幕,年度最强产品揭晓!

1月4日&#xff0c;鲁大师2022年度牛角尖颁奖晚会在湖北襄阳成功举办。鲁大师的”牛角尖”奖是由过去一年上亿用户通过鲁大师测试得到的真实数据&#xff0c;以及鲁大师实验室通过专业的测试规范共同缔造的硬件奖项。颁发给的都是各大PC、手机、电动车领域最优秀、最顶尖的产品…

JAVA 的内存泄露分析

背景 前不久&#xff0c;上线了一个新项目&#xff0c;这个项目是一个压测系统&#xff0c;可以简单的看做通过回放词表&#xff08;http请求数据&#xff09;&#xff0c;不断地向服务发送请求&#xff0c;以达到压测服务的目的。在测试过程中&#xff0c;一切还算顺利&#x…

统一网关Gateway

网关功能&#xff1a; 身份验证、权限校验服务路由、负载均衡请求限流 网关实现技术&#xff1a; gatewayzuul Zuul是基于Servlet的实现&#xff0c;属于阻塞式编程。而SpringCloudGateway则是基于Spring5中提供的WebFlux&#xff0c;属于响应式编程的实现&#xff0c;具备更…

Servlet 综合案例(empProject)

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;Java案例分…

计算机网络进阶 ---- 网络类型 ---- 二层封装协议 ---- HDLC ---- PPP ---- pap认证 ---- chap认证 ---- 详解

一、网络类型&#xff1a; 【1】点到点 &#xff08;Peer to Peer – p2p&#xff09; ---- 在一个网段中&#xff0c;只能部署两个节点&#xff1b;【2】MA&#xff08;Multiple Access&#xff09; ---- 多路访问 ---- 一个网段中&#xff0c;可以部署的节点数量不限制&…