【Ansible】02

devtools/2024/9/22 19:08:35/

【Ansible】01

Ansible

playbook 剧本

ansibleplaybook_6">ansible-playbook
  • 常用于复杂任务的管理
  • 管理经常要完成的任务
  • playbook也是通过模块和它的参数 , 在特定主机上执行任务
  • playbook是一个文件 , 该文件中需要通过yaml格式进行书写
  • 将经常需要执行的任务写入一个文件
  • 剧本/文件中可以包换多个任务
  • 可以根据剧本 , 执行相关任务命令
  • 可执行周期性的复杂任务

YAML

  • YAML 不是一个标记语言
  • YAML 是一个可读性高 , 用来表达数据序列的格式语言
  • YAML 以数据为中心 , 重点描述数据的关系和结构
1. YAML 语法规范
  1. yaml 文件的文件名 , 一般以 yml 或 yaml 作为扩展名

  2. 文件一般以 — 作为第一行 , 不是必须的 , 但是常用

  3. 键值对使用冒号 : 表示 , 冒号后必须有空格

  4. 数组使用 - 表示 , - 后面必须有空格

  5. 相同的层级必须有相同的缩进 , 如果缩进不对则语言错误.

  6. 每一级缩进建议 2个空格

  7. 全文不能用 tab 缩进 , 必须用 空格 缩进

   # 一般写法name=szhounumber=(1 5 6 70 88 99 100)# YAML 写法name= szhounumber:- 1- 5- 6- 70- 88- 99- 100
2. 配置 vim 适应 YAML 语法
# 文件位置和名字是固定的,用于设置vim的格式
[root@pubserver ansible]# vim ~/.vimrc
set ai        # 设置自动缩进
set ts=2      # 设置按tab键,缩进2个空格
set et        # 将tab转换成相应个数的空格

编写 playbook

  • 一个剧本/playbook , 可以包含多个play
  • 每个play用于在指定的主机上 , 通过模块和参数执行响应的任务
  • 每个play可以包含多个任务
  • 任务有某块和参数构成
---- 名字: 猴王初问世职员表: 猴哥, 大马猴场景:- 名字: 石头裂开了- 名字: 天宫震颤了- 名字: 官封弼马温职员表: 猴哥, 玉皇大帝场景:- 名字: 太白金星骗猴哥- 名字: 猴哥天宫放马
1. 基础 playbook
# 编写用于测试连通性的playbook,相当于执行ansible all -m ping
[root@pubserver ansible]# vim test.yml
---
- hosts: alltasks:- ping:[root@pubserver ansible]# ansible-playbook test.yml  # 执行playbook# 以上更规范的写法如下:
[root@pubserver ansible]# vim test.yml
---
- name: test network            # play的名字,可选项hosts: all                    # 作用于所有的主机tasks:                        # 任务- name: test via ping       # 第1个任务的名字,可选项ping:                     # 第1个任务使用的模块[root@pubserver ansible]# ansible-playbook test.yml  # 执行playbook# 在dbs组的主机和web1上创建/tmp/demo目录,权限是0755。将控制端/etc/hosts拷贝到目标主机的/tmp/demo中
[root@pubserver ansible]# vim fileop.yml
---
- name: create dir and copy filehosts: dbs,web1    # 这里的名称,必须出现在主机清单文件中tasks:- name: create dirfile:path: /tmp/demostate: directorymode: '0755'- name: copy filecopy:src: /etc/hostsdest: /tmp/demo/hosts# 执行playbook
[root@pubserver ansible]# ansible-playbook fileop.yml# 在webservers组中的主机上,创建用户bob,附加组是adm;在db1主机上,创建/tmp/hi.txt,其内容为Hello World.
[root@pubserver ansible]# vim two.yml
---
- name: create userhosts: webserverstasks:- name: create bobuser:name: bobgroups: adm- name: create filehosts: db1tasks:- name: make filecopy:dest: /tmp/hi.txtcontent: "Hello World"[root@pubserver ansible]# ansible-playbook two.yml
2. 换行 ’ | ’ 和并行 ’ > ’
  • | 和 > 的区别

    • "|"它保留换行符
  • “>” 把多行合并为一行

# 通过copy模块创建/tmp/1.txt,文件中有两行内容,分别是Hello World和ni hao
[root@pubserver ansible]# vim f1.yml
---
- name: play 1hosts: webserverstasks:- name: mkfile 1.txtcopy:dest: /tmp/1.txtcontent: |Hello World!ni hao.[root@pubserver ansible]# ansible-playbook f1.yml
# 查看结果
[root@web1 ~]# cat /tmp/1.txt 
Hello World!
ni hao.# 通过copy模块创建/tmp/2.txt,文件中有一行内容,分别是Hello World! ni hao[root@pubserver ansible]# vim f2.yml 
---
- name: play 1hosts: webserverstasks:- name: mkfile 2.txtcopy:dest: /tmp/2.txtcontent: >Hello World!ni hao.[root@pubserver ansible]# ansible-playbook f2.yml
[root@web1 ~]# cat /tmp/2.txt 
Hello World! ni hao.
3. parted模块
  • 用于硬盘分区
  • 选项 :
    • device # 待分区设备
    • number # 分区编号
    • state # 状态
      • present # 创建
      • adsent # 删除
    • part_start # 分区起始位置 , 默认从头开始
    • part_end # 分区的结束位置 , 默认到结尾
# 在web1主机上,对/dev/vdc进行分区,创建1个1GB的主分区
[root@pubserver ansible]# vim disk.yml
---
- name: disk managehosts: web1tasks:- name: create a partitionparted:device: /dev/vdcnumber: 1state: presentpart_end: 1GiB[root@pubserver ansible]# ansible-playbook disk.yml# 在目标主机上查看结果[root@web1 ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
.. ...
vdc    253:32   0   20G  0 disk 
`-vdc1 253:33   0 1023M  0 part # 继续编辑disk.yml,对/dev/vdc进行分区,创建1个新的5GB的主分区
[root@pubserver ansible]# vim disk.yml 
... ...- name: add a new partitionparted:device: /dev/vdcnumber: 2state: presentpart_start: 1GiBpart_end: 6GiB[root@pubserver ansible]# ansible-playbook disk.yml [root@web1 ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
... ...
vdc    253:32   0   20G  0 disk 
|-vdc1 253:33   0 1023M  0 part 
`-vdc2 253:34   0    5G  0 part # 继续编辑disk.yml,创建名为my_vg的卷组,它由上面创建的vdc1和vdc2构成
[root@pubserver ansible]# vim disk.yml 
... ...- name: create my_vglvg:vg: my_vgpvs: /dev/vdc1,/dev/vdc2# 继续编辑disk.yml,在my_vg卷组上创建名为my_lv的逻辑卷,大小1G
[root@pubserver ansible]# vim disk.yml 
... ...- name: create my_lvlvol:vg: my_vglv: my_lvsize: 1G# 继续编辑disk.yml,格式化my_lv为ext4
[root@pubserver ansible]# vim disk.yml 
... ...- name: mkfs my_lvfilesystem:dev: /dev/my_vg/my_lvfstype: ext4# 继续编辑disk.yml,将my_lv挂载到/data
[root@pubserver ansible]# vim disk.yml 
... ...- name: mount my_lvmount:path: /datasrc: /dev/my_vg/my_lvfstype: ext4state: mounted# 完整的disk.yml如下
---
- name: disk managehosts: web1tasks:- name: create a partitionparted:device: /dev/vdcnumber: 1state: presentpart_end: 1GiB- name: add a new partitionparted:device: /dev/vdcnumber: 2state: presentpart_start: 1GiBpart_end: 6GiB- name: create my_vglvg:vg: my_vgpvs: /dev/vdc1,/dev/vdc2- name: create my_lvlvol:vg: my_vglv: my_lvsize: 1G- name: mkfs my_lvfilesystem:dev: /dev/my_vg/my_lvfstype: ext4- name: mount my_lvmount:path: /datasrc: /dev/my_vg/my_lvfstype: ext4state: mounted
4. yum装包组
1) 多软件安装格式
# 在webservers组中的主机上,安装httpd、php、php-mysqlnd
[root@pubserver ansible]# vim pkg.yml
---
- name: install pkgshosts: webserverstasks:- name: install web pkgs  # 此任务通过yum安装三个包yum:name: httpd,php,php-mysqlndstate: present# 安装多个软件包,还可以写为:
---
- name: install pkgshosts: webserverstasks:- name: install web pkgsyum:name: [httpd,php,php-mysqlnd]state: present# 安装多个软件包,还可以写为:
---
- name: install pkgshosts: webserverstasks:- name: install web pkgsyum:name: - httpd- php- php-mysqlndstate: present

http://www.ppmy.cn/devtools/7375.html

相关文章

什么是RAG?

RAG是“Retrieval-Augmented Generation”的缩写,这是一种自然语言处理(NLP)技术,用于增强生成式模型的性能,尤其是在问答、文本摘要、对话系统等任务中。RAG结合了检索(Retrieval)和生成&#…

【创建型模式】原型模式

一、原型模式概述 原型(Prototype)模式的定义:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效&#xf…

【JavaEE初阶】网络原理|认识协议|协议分层|TCP/IP模型|封装和分用

一、认识协议 1.概念 简单来说:就是一种通信双方,对于通信规则的约定(标准),一定是通信双方都认可的 但是这个协议不一定是认可面非常广的,即使是两个人之间的也可叫做协议 就好⽐⻅⽹友,彼此…

c#数据储存栈(stack)和堆(heap)的方式

C#中,类的数据存储是通过堆(Heap)和栈(Stack)这两种内存结构来实现的。理解这两种数据结构的工作方式有助于更好地理解C#中的数据存储机制。 栈(Stack) 栈是一种后进先出(Last In,…

Windows安装MongoDB结合内网穿透轻松实现公网访问本地数据库

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

PHP 使用 PHPMailer 发送电子邮件

1. PHPMailer 介绍 phpMailer 是一个非常强大的 php 发送邮件扩展包,可以设定发送邮件地址、回复地址、邮件主题、html邮件内容和上传附件等,使用起来非常方便。它目前有着有近 4 千万的下载量,是 PHP 开发者实现邮件发送功能的首选扩展包 它…

什么是代理IP?如何正确使用代理IP?

代理IP(Proxy IP)是一种网络技术,它允许用户通过一个中介服务器(即代理服务器)来访问互联网。具体来说,代理IP隐藏了用户的真实IP地址,使用第三方的IP地址进行网络访问。当用户发起网络请求时&a…

快速部署k8s

一、前提 服务器规划: 角色IP地址master192.168.140.128node1192.168.140.129node2192.168.140.131 服务器要求: 建议最小硬件配置: 2核CPU、2G内存、20G硬盘。服务器可以访问互联网,能够联网下载镜像。时间进行同步!!! 软件环…