ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

day16.5

2022-07-01 19:36:35  阅读:155  来源: 互联网

标签:rsync name handlers dest ansible nginx day16.5


day16.5

playbook handlers(触发器)

# 当修改完某个服务的配置文件时,应该重启服务
- hosts: web_group
  tasks:
  - name: 推送nginx配置文件
    copy:
      src: "{{ item.src }}"
      dest: "{{ item.dest }}"
    with_items:
      - {src: "/root/code/nginx.conf",dest: "/etc/nginx/nginx.conf"}
    notify: nginx_php

  handlers:
  - name: nginx_php
    service:
      name: nginx
      state: reloaded

handler注意点

1.无论多少个task调用相同hander,只会在所有tasks执行完成后,触发handles
2.handlers只有在其所在的任务被执行时,才会被运行,如果一个任务中定义了notify调用handiers,但是由于条件判断等原因,该任务未被执行,那么handdiers同样不会被执行
3.handlers只会在每一个play的末尾运行一次,如果想在一个playbook中间运行handlers,则需要使用mera模块来使用
4.如果一个play在运行到调用handlers的语句之前失败了,那么这个handlers将不会被执行。我们可以使用meta模块的-force-handlers选项来强制执行handlers所在play中途运行失败也能运行
5.不能使用handlers代替tasks

ansible任务标签

# 对一个task打一个tag
- name: 安装rsync
  yum:
    name: rsync
    state: present
  when: ansible_hostname != 'db01'
  tags: install_rsync
# 对一个task打多个tag
- name: 安装rsync
  yum:
    name: rsync
    state: present
  when: ansible_hostname != 'db01'
  tags: 
    - install_rsync
    - send_rsync_config

# 对多个task打一个tag
- name: 安装rsync
  yum:
    name: rsync
    state: present
  when: ansible_hostname != 'db01'
  tags: install_rsync
  
  - name: 启动rsync服务
	service:
	  name: rsyncd
	  state: started
	  enabled: True
	when: ansible_hostname == 'backup'
	tags: install_rsync

使用标签

-t: 执行指定的tag标签任务
--skip-tags:执行--skip-tags之外的标签任务

ansible-playbook -i base/hosts lnmp_wp.yml -t 'install_rsync'
ansible-playbook -i base/hosts lnmp_wp.yml --skip-tags 'install_rsync'

playbook的复用

在需要重启的配置文件里加入notify并定义它的变量
- name: 推送配置文件
    copy:
      src: "{{ item.src }}"
      dest: "{{ item.dest }}"
    with_items:
      - {src: "/code/nginx.conf",dest: "/etc/nginx/nginx.conf"}
      - {src: "/code/wordpress.conf",dest: "/etc/nginx/conf.d"}
      - {src: "/code/www.conf",dest: "/etc/php-fpm.d/"}
    notify: nginx
    when: ansible_hostname is match 'web*'
在文件最后写他的配置文件
 handlers:
    - name: rsync
      service:
        name: rsync
        state: restarted
        
    - name: nginx
      service:
        name: rsync
        state: restarted

facts缓存

缓存中,记录主机自带的变量,直接调用即可

缓存加载时间:在play执行的时候,会将变量内容放到内存中

缓存清除时间:当该play执行完所有task之后,会将内存中的变量全部删除

## 主机名
ansible_hostname // 显示第一个.之前的主机名
ansible_fqdn // 显示完整的主机名
## 内存
ansible_memtotal_mb // 总内存
ansible_memfree_mb // 空闲内存
ansible_swaptotal_mb // 总虚拟内存
ansible_swapfree_mb // 空闲虚拟内存
## CPU
ansible_processor_cores // cpu核心数
## 系统
ansible_os_family 	// 系统类型 RedHat Debain
ansible_distribution 	// 系统发行版 CentOS
ansible_distribution_major_version 	// 版本号 7
ansible_distribution_version 	// 详细版本号 7.6
## IP相关
ansible_dns.nameservers // DNS
ansible_default_ipv4.address // eth0外网IP
ansible_eth0.ipv4.address // eth0外网IP
ansible_eth1.ipv4.address // eth1内网IP
## 磁盘
ansible_devices.sda.partitions.sda1.size // sda1分区的磁盘大小:/boot分区
ansible_devices.sda.partitions.sda3.size // sda3分区的磁盘大小: /分区

标签:rsync,name,handlers,dest,ansible,nginx,day16.5
来源: https://www.cnblogs.com/wangchengww/p/16435731.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有