小机灵鬼|自动化运维工具:ansible(二)( 五 )
5 在role中定义
变量定义:key=value
示例:http_port=80
变量调用方式:
- 通过{{ variable_name }}调用变量 , 且变量名前后必须有空格 , 有时用"{{ variable_ name}}" 才生效
- ansible playbook -e选项指定
功能:管理加密解密yml文件
ansible-vault [create |decrypt| edit encrypt|rekey |view]ansible-vault encrypt hello.yml加密ansible-vault decrypt hello.yml解密ansible-vault view hello.yml查看ansible-vault edit hello.yml编辑加密文件ansible-vault rekey hello.yml修改口令ansible-vault create new.yml创建新文件5>Ansible-console:2.0+新增 , 可交互执行命令 , 支持tabroot@test (2)[f:10] $
执行用户@当前操作的主机组(当前组的主机数量)[f:并发数]$
?设置并发数:forksn 例如:forks 10
?切换组:cd主机组 例如:cd web
?列出当前组主机列表:list
?列出所有的内置命令:?或help
?示例:
[root@ansible ~]#ansible-consoleWelcome to the ansible console.Type help or ? to list commands.root@all (2)[f:5]$ cd webserverroot@webserver (1)[f:5]$ forks 10root@webserver (1)[f:10]$ command hostname192.168.100.10 | CHANGED | rc=0 >>node1root@webserver (1)[f:10]$ shell ls /root192.168.100.10 | CHANGED | rc=0 >>anaconda-ks.cfghello.shhello.sh.4604.2020-03-17@21:14:22~14、模板templates文本文件 , 嵌套有脚本(使用模板编程语言编写)
Jinja2语言 , 使用字面量 , 有下面形式
- 字符串:使用单引号或双引号
- 数字:整数 , 浮点数
- 列表: [item1, item2, ...]
- 元组: (item1, item2, ...)
- 字典: {key1:value1, key2:value2, ...}
- 布尔型: true/false
- 算术运算: +,-, *,/.// %,**
- 比较操作: ==,!=,>,>=, <, <=
- 逻辑运算: and, or, not
- 流表达式: For If When
templates文件必须存放于templates目录下 , 且命名为.j2结尾
yamI/yml文件需和templates目录平级 , 目录结构如下:
├── ansible
└── templates
#实例:配置nginxtemplates模板文件 , 使不同主机的worker进程数量=CPU*2[root@ansible ~]#mkdir ansiable/templates[root@ansible ~]#tree -d.├── ansible│└── templates└── bin[root@ansible ansible]#ansible webserver -m setup | grep "processor"#查看CPU变量名"ansible_processor": ["ansible_processor_cores": 1,"ansible_processor_count": 1,"ansible_processor_threads_per_core": 1,"ansible_processor_vcpus": 1, [root@ansible ansible]#cp /etc/nginx/nginx.conf ./templates/nginx.conf.j2[root@ansible ansible]#vim templates/nginx.conf.j2[root@ansible ansible]#vim testtempl.yml ---- hosts: webserverremote_user: roottasks:- name: install paskageyum: name=nginx- name: copy templatetempate: src=http://kandian.youth.cn/root/ansible/templates/nginx.conf.j2 dest=/etc/nginx/nginx.conf- name: start serviceservice: name=nginx state=started enabled=yes[root@ansible ansible]#ansible-playbook testtempl.ymlwhen语句:条件测试:如果需要根据变量、facts或此前任务的执行结果来作为某task执行与否的前提时要用到条件测试 , 通过when语句实现 , 在task中使用 , jinja2的语法
推荐阅读
- 小机灵鬼|干货速来!透彻剖析微服务架构设计模式,深入开发Java有奇效
- 中国新闻网|沈阳自动化所牵头制定“WIA-FA”一致性测试国家标准获批
- 科技匠|手把手教你如何使用免费自动化工具——Appium(安卓版)
- 执笔抒情|万茜发文向宁静郁可唯几位姐姐道歉,配图还在抖机灵
- 小机灵鬼|央视重磅关注天府新区这件事
- NBA|原创万茜发文向宁静郁可唯几位姐姐道歉,配图还在抖机灵
- 小机灵鬼|小米截胡?雷军宣布第三代自研屏下摄像头明年量产,中兴黯然失色
- 津爱改装车|我选择的开源运维监控系统-Prometheus
- 小机灵鬼|4K屏设计专业神器!ROG幻15成开学季最香生产力工具
- SpreadJS 应用案例:电力自动化在线数据采集报表系统
