365 字
2 分钟
使用ansible-role模板部署redis
JinJa2模板文件
JinJa2是一个特有的模板语言,主要作用就是能让普通的文件,能读取程序设置的变量,用模板语法,动态替换数据。
语法规则:
- 配置文件必须是以.j2为后缀
- 必须放入在template目录下
- 使用的ansible模块是template模块
例如:
shd_config文件是SSH服务端的配置文件,其中Port字段指明了sshd服务的链接端口号。将该字段的值替换为变量,并在vars/main.yml中配置,可以动态地修改这个变量的值。
实践:部署redis
tasks/main.yml
- name: 01 - install requirement apps yum: name: "{{ item }}" state: installed loop: "{{ requirements }}"- name: 02 - create data directory file: path: "{{ item }}" state: directory loop: "{{ data_dir }}"- name: 03 - download redis get_url: validate_certs: false url: "{{ source_url }}" dest: "{{ redis_package }}" force: true- name: 04 - unarchive redis unarchive: src: "{{ redis_package }}" dest: /opt/ remote_src: true- name: 05 - redis complie make: chdir: /opt/redis-5.0.7 target: "{{ item }}" loop: "{{ compile_target }}"- name: 06 - copy config file to db-51 template: src: redis.j2 dest: "{{ redis_conf }}"- name: run redis-server shell: cmd: redis-server "{{ redis_conf }}"vars/main.yml
requirements: - gcc - makedata_dir: - /opt/redis - /opt/redis/conf - /opt/redis/pid - /opt/redis/logs - /opt/redis/datasource_url: http://download.redis.io/releases/redis-5.0.7.tar.gzredis_package: /opt/redis-5.0.7.tar.gzcompile_target: - MALLOC=libc - installredis_conf_dest: /opt/redis/conf/redis.conf
bind_ip: 127.0.0.1 172.16.1.51 10.0.0.51redis_port: 6379redis_pid_file: /opt/redis/pid/redis.pidredis_log_file: /opt/redis/logs/redis.logredis配置文件redis.j2
daemonize yesbind {{ bind_ip }}port {{ redis_port }}pidfile {{ redis_pid_file }}logfile {{ redis_log_file }}role启动文件
- hosts: db roles: - deploy_redis通过这种方式,每个playbook可以被多次复用,对于不同的配置只需要对vars进行更改。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
使用ansible-role模板部署redis
https://white-festa.net/posts/ansible-role-template/ 最后更新于 2022-11-05,距今已过 1144 天
部分内容可能已过时