好多都给忘了##########
8
ansible-galaxy init 初始化一个角色, 创建标准的角色目录结构
templates 模板文件
Welcome to {{ ansible_fqdn }} on {{ ansible_enp1s0.ipv4.address }}
#这段模板文件的作用是在生成 HTML 文件时,动态插入当前主机的完全限定域名(FQDN)和网卡 IP 地址。这样可以确保每次生成的 HTML 文件都是针对特定主机的。
#定义一个 HTML 模板文件,使用 Ansible 变量动态生成内容
#Jinja2 模板引擎:用于动态生成文件内容。
#Ansible 变量:ansible_fqdn 和 ansible_enp1s0.ipv4.address 分别代表完全限定域名和网卡 IP 地址。
service 模块用于管理系统服务的状态。如开启 started
name: copy index.html.j2
template:
src: index.html.j2
dest: /var/www/html/index.html
作用:使用 template 模块将模板文件 index.html.j2 复制到 /var/www/html/index.html。
知识点:template 模块用于将 Jinja2 模板文件复制到目标位置,并替换模板变量。
copy 模块用于将本地文件直接复制到远程主机的目标位置,而不进行任何处理。如果你只需要简单地复制文件,不需要任何模板变量替换,那么 copy 模块就足够了。
template 模块
template 模块用于将包含 Jinja2 模板变量的文件复制到远程主机的目标位置,并在复制过程中替换模板变量。如果你需要根据变量动态生成文件内容,那么 template 模块是更好的选择。
16
ansible-vault encrypt --vault-id /home/alice/ansible/secret.txt /home/alice/ansible/passdb.yml
ansible-vault encrypt:使用 Ansible Vault 加密指定的文件
--vault-id 指定加密密钥文件为
18
wget:下载文件的工具。可以从指定URL下载文件
ansible-vault rekey:重新设置 Ansible Vault 文件的密钥
小结
Ansible Roles 是一种组织和管理 Ansible Playbooks 的方法,它允许将相关的配置和任务分组到一个可重用的单元中。在 Ansible Playbook 中,可以通过 roles 关键字来包含一个 Role。
Role 通常位于项目的 roles 目录下,每个 Role 有自己的目录结构,包括 tasks, templates, files, vars, defaults, meta 等子目录
Ansible Collections 是一种将 Ansible 资源(如角色、模块、插件、剧本等)打包在一起的格式。
Collections 可以通过 Ansible Galaxy 或者直接使用命令行工具进行安装。
使用 ansible-galaxy collection install <namespace.collection> 命令安装 Collection。
10
fail模块: 用于在指定条件下终止任务并显示错误信息
msg : 输出信息 类是 echo
debug:模块用于输出调试信息
msg : 输出信息 类是 echo
parted 模块: 用于管理磁盘分区
device:指定要操作的设备。
number:指定分区编号。
unit:指定单位,如 GiB、MiB 等
state:指定分区的状态,可以是 present 或 absent
part_end:指定分区的结束位置
filesystem模块: 用于格式化文件系统
fstype:指定文件系统的类型,如 xfs、ext4 等。
dev:指定要格式化的设备。
mount_options:指定挂载选项。
ansible_devices: ansible的内置变量,表示目标主机上可用的设备列表
when: 条件判断
block: 定义一组任务,如果任务失败则跳转到rescue
rescue: 处理block任务失败的情况
alway: 无论block是否成功都会执行
ansible-galaxy 是 Ansible 的命令行工具,用于管理 Ansible 的各种资源,如 Roles、Collections 等。
collection install 命令用于安装 Ansible Collection。
11
ansible_lvm.vgs: ansible的内置变量 检查卷组是否存在
lvol: 模块
vg: 卷组名
lv: 逻辑卷名
size: G M
state: present absent
12
Jinja2模板渲染
Ansible 将 newhosts.j2 模板文件加载并解析。
{% for i in groups.all %} 使用 groups.all 获取所有主机列表。
对每个主机执行循环,获取其 ansible_enp1s0.ipv4.address、ansible_fqdn 和 ansible_hostname。
将这些值拼接成一行,并在每行之间添加换行符(除非是最后一行)
hostvars: 包含每个主机的事实信息
ansible_hostname: 表示主机名
- fact: all 远程所有主机获取facts信息
13
功能:copy模块用于将本地文件或字符串内容复制到远程主机。
简单用途:适用于静态内容的复制。
功能:template模块用于将本地模板文件渲染后复制到远程主机。
复杂用途:适用于动态生成文件内容,尤其是需要使用多个变量的情况。
在Ansible中,可以通过 [group_name:vars] 的形式为特定组定义变量,这些变量可以在剧本中被引用。
在剧本中,通过 {{ con }} 引用变量 con。
这个变量是在Inventory文件中定义的,因此在剧本中可以直接引用。