AIOps 一场颠覆传统运维的盛筵
1034
2022-10-03
自动化运维工具之Ansible- YAML初识
1. Ansible YAML 介绍
YAML:一个可读性高的用来表达资料序列的格式。YAML的特点:
可读性好和脚本语言交互性好使用实现语言的数据类型有一个一致的信息模型易于实现可以基于流来处理表达能力强,扩展性好
YAML的格式:
序列,列表(用-来打头),字典(用冒号分割)
yaml的组件构成
inventory:具备应用到哪些主机,哪些组上。modules:调用的模块有哪些ad hoc commands:调用的命令是什么playbooks
tasks:任务,调用模块完成的某任务
variables:变量
templates:模板
handlers:处理器,某条件满足时,触发执行的操作。发生改变时执行的操作。
roles:角色
tags: 可以在一个playboos中指定仅运行某个task。有一个特殊的tags always。
2. 实例:
第一个剧本:对ihdmgr组进行存储查询,启动nginx,校正系统时间,对webservices组开启防火墙。
cat getBaseInfo.yml- hosts: ihdmgr vars: http_port: 80 max_clients: 200 remote_user: hdm tasks: - name: get memo info command: free -g || bin/true - name: get storage info command: /bin/df -h ignore_errors: True - name: start nginx service: name=nginx state=started sudo: yes - name: set system date shell: date -s 17:10:23 - hosts: webservers remote_user: root tasks: - name: set iptables start service: name=iptables state=started
第二个实例:在ihdmgr主机组上批量安装httpd服务
# 在主机上查看上面是否安装httpd服务rpm -aq httpd ansible ihdmgr -m yum -a 'name=httpd state=installed' -u root # 有则显示已安装,之前未安装则重新安装 # 为了试验,如有安装可先停用,并卸载ansible ihdmgr -m service -a 'name=httpd state=stopped' -u rootansible ihdmgr -m yum -a 'name=httpd state=removed' -u root#################创建剧本installhttpd###################- hosts: ihdmgr vars: http_port: 80 max_clients: 200 remote_user: root sudo: yes tasks: - name: ensure apache is at the latest version yum: name=httpd state=latest - name: write the apache config file template: src=/etc/ansible/template/httpd.conf dest=/etc/httpd/conf/httpd.conf notify: - restart apache - name: ensure apache is running service: name=httpd state=started handlers: - name: restart apache service: name=httpd state=restarted ############# # 运行剧本 # 剧本执行具有幂等性,多次执行并不会重新安装,或者多次重启。 ansible-playbook installhttpd.yml
附记:httpd启动故障处理
# 故障现象 不能加载libaprutil-1.so.0 文件while loading shared libraries: libaprutil-1.so.0:cannot open shared object file# 处理手段# 确认系统内该文件是否存在find -name libaprutil-1.so.0# 查看共享库文件more etc/ld.so.confinclude ld.so.conf.d/*.conf# 加载上面步骤找到的库文件目录cd /etc/ld.so.conf.d/vi httpd-apr.conf/opt/trm/usr/local/apache2/lib/# 更新共享配置库ldconfig -v
第三个实例:在web主机组上创建nginx 组 和 用户。在db组上拷贝文件。
执行剧本
ansible-playbook nginx.yml
发表评论
暂时没有评论,来抢沙发吧~