Playbook(任务剧本):编排定义ansible任务集的配置文件,由ansible顺序依次执行,通常是JSON格式的* YML文件。playbooks的详细配置书写,可访问ansible官网:ansible官网的playbook模块
YAML语言:YAML是一个类似 XML、JSON 的标记性语言。YAML 强调以数据为中心,并不是以标识语言为重点。因而 YAML 本身的定义比较简单,号称“一种人性化的数据格式语言”
YAML语言简单书写规范
- 使用“#”来表示注释内容
- 使用空格作为嵌套缩进工具。通常建议使用两个空格缩进,不建议使用 tab (甚至不支持)
- 序列表示
“-”(横线) + 单个空格 | 表示单个列表项 |
---|---|
— | 文档开始 |
- 键值表:使用 “:”(冒号) + 空格表示单个键值对
实验
实验环境接上一篇博客
- 由于yaml语言的特殊性,所以先在家目录下创建文件,将tab键摄制成代表两个字符:
autocmd filetype yaml setlocal ai ts=2 sw=2 et
- 用yaml语言安装并配置apache
- 在ansible文件下便编辑playbook.yml文件:
给webservers组的主机安装和开启httpd服务 - 检验是否有语法错误
- 查看playbook的内容
- 没有语法错误后推送,没有报错则推送成功
- 此时查看server2上的httpd端口
- 编辑playbook.yml文件,创建测试页面index.html
- 推送
- 查看是否成功
- 查看信息用来编辑playbook:查看主机
- 在ansible目录下创建files目录,并将httpd的配置文件httpd.conf文件拷贝到该目录下
- 将配置文件信息编辑到playbook文件中
- 推送
- 此时查看两端文件的加密串一样
- 编辑playbook.yml文件,添加重启httpd的服务,如果配置文件修改,则重启httpd
- 修改httpd的端口为8080
- 推送playbook.yml
- 查看server2上的httpd端口变为8080
- 将firewalld添加httpd策略
- 将端口重新变回80端口
- 推送
- 测试访问server2和server3皆成功
- 因为此时访问server2和3都是同样的页面,不便于区分,所以可以调用其hostname来区分
- 测试
- 也可以调用其ip地址
- 测试
- 可以以某一个任务单独执行
- 端口的更改可以以调用变量的形式来修改,不用每次再修改配置文件
- 更改配置文件为httpd.conf.j2
- 推送不报错,则修改成功
- 查看server2上的httpd服务端口已经更改
- 设置httpd服务为开机自启
- 在server2上查看
- template模板
- 在ansible目录下创建hostinfo.yml文件
- 创建templates目录,在该目录下创建info.j2文件
- 查看语法是否有错误,并推送
- 查看文件和文件内容(主机信息)
- 编辑install.yml文件给主机分类安装不同的软件或者服务
- 查看语法是否有错误,并推送
- 在server2和3上的端口信息,判断是否安装成功
- 通过变量的形式更改解析文件
- 将/etc/hosts文件拷贝到templates目录下,并修改
- 编辑hostinfo.yml文件,将信息加入
- 推送
- 在server2上查看
- 用户信息加密
- 编辑添加用户的yml文件
- 推送执行,则用户创建成功
- 也可以将用户信息存储到一个文件,用来调用添加
- 推送添加成功
- 因为此时任何人都可以看到用户名和密码,很不安全,所以对文件进行加密
- 此时看看文件,已经加密了
- 当然也可以进行解密操作
- 编辑文件,将用户密码加密
- 给adduser.yml也添加密码,进行加密操作
- 此时查看用户和密码已经加密
- 文件也进行了加密