自动化运维之Ansible(五)
playbook中的notify和handler当执行一个playbook时,第一次执行和第二次执行效果相同,当服务的配置文件发生变化时再次安装时已经启动的服务不会重启,此时就需要使用到notify。
notify的action可用于在每个play的最后被触发,这样可以避免多次有改变发生时每次都执行指定的操作,仅在所有的变化发生完成后一次性地执行指定操作。
notify是触发条件,headlers是执行的任务
notify和handler的使用方法此处以上一节中的httpd为例,刚才已经启动了HTTP服务,http的端口为8080,此时再次修改httpd.conf,将端口改为80
12[root@ansible data]# vim /data/httpd.confListen 80
2.对yaml文件进行修改,增加notify及handlers
123456789101112131415161718[root@ansible data]# vim httpd.yaml---#install httpd - hosts: webserver remote_user: ...
自动化运维之Ansible(四)
ansible的playbookansible-playbook为ansible的脚本,其是由yaml语言构成,这种语言对格式的要求非常高。
yaml语言的格式要求
在单一档案中,可以用连续三个连字号(—)区分多个档案,另外,还有选择性的连续三个点号_(…)来表示档案的结尾
此行开始正常写playbook的内容,一般建议写明该playbook的功能
使用#注释代码
缩进必须统一的,不能空格和tab混用
缩进的级别也必须是一致的,同样的缩进代表同样的级别,程序判别配置的级别是通过缩进结合换行来实现的
YAML文件内容是区分大小写的,k/v的值均需大小写敏感
多个k/v可以同行写也可以换行写,同行使用,分割
v可以是个字符串,也可以是另一个列表
一个完整的代码块功能需最少元素包括name和task
一个name只能包括一个task
YAML文件扩展名通常为yaml或yml
示例:
123456789[root@ansible data]# vim hello.yaml---#hello world - host: webserver rem ...
自动化运维之Ansible(三)
自动化运维之Ansible(三)Ansible系列命令ansible有许多的命令,ansible、ansible-doc、ansible-playbook、ansible-vault、ansible-console、ansible-galaxy、ansible-pull,以下以较常用的几个命令做详细的说明。
ansible-doc命令ansible-doc用来显示ansible中各种模块的简要帮助信息
语法:
1ansible-doc [-l|-F|-s] [options] [-t <plugin type> ] [plugin]
选项
说明
-l
列出可用模块
-a
显示所有模块的文档
-s
显示指定模块的playbook片段
示例:
123456#列出所有模块[root@localhost ~]# ansible-doc -l#查看指定模块的用法[root@localhost ~]# ansible-doc ping#查看指定模块的简单用法[root@localhost ~]# ansible-doc -s ping
ansible命令 ...
自动化运维之Ansible(八)
ansible的模板template在某些环境下可能会出现这种情况,比如主机A配置文件中的某个值为1,主机B配置文件中此值为2,现在需要将此值在现有的基础上再加上2,此时ansible的模板就发挥其作用了,template可以根据模块文件动态生成相对应的配置文件。
template的格式要求template对文件的存放和命名有要求,template文件必须存放在templates目录下,并且以.j2后缀命名。
yaml文件需要和templates目录平级,目录结构如下。
123456[root@ansible data]# tree yaml/yaml/├── hello.yaml├── httpd.yaml└── templates └── test.conf.j2
template的使用方法准备环境此处以nginx为例,编写playbook为主机列表中的主机安装nginx
1234567891011[root@ansible ~]# vim nginx.yml---#install nginx- hosts: webserver remote_user: ro ...
自动化运维之Ansible(二)
自动化运维之Ansible(二)本文将讲述ansible的各种安装方式以及Ansible的配置文件
Ansible的安装ansible可以通过多种方法进行安装,yum、编译、pip和git,都能安装ansible以下演示ansible的各种安装方式
yum安装ansible安装最简单的方法可以使用rpm包进行安装,因为ansible已经被收入到的EPEL源中,在配置好yum源后就可以使用yum命令直接安装
1234#配置EPEL源[root@localhost ~]# yum install epel-release -y#安装ansible[root@localhost ~]# yum install ansible -y
编译安装编译安装ansible时需要先下载ansible的源码包,然后对其进行进行编译安装。
1234567891011121314#下载源码包[root@localhost ~]# wget https://releases.ansible.com/ansible/ansible-latest.tar.gz#安装编译所需的包组[root@localhost ...
自动化运维之Ansible(一)
自动化运维之Ansible(一)工作中经常会面临到机器非常多,所接触到的主机可能是成百上千台以上,所以在管理那么多主机时必须要使用自动化管理工具对其进行管理,此时如果使用手工进行管理将是非常的费时费力的。
自动化运维应用场景自动化运维工具的应用场景通常会涉及到以下几种环境:
文件传输:比如将某软件的配置文件在某台服务器上配置完成,配置完成后要将其配置文件传送到其他的所有服务器上去,让其他的服务器上的软件也实现相同功能。
应用部署:比如说在某些服务器上安装一个数据库、一个web服务器软件或者缓存服务器的软件,对一批服务器进行批量的部署软件
配置管理:软件部署完毕后还需要对软件的配置文件进行批量的配置和管理,对配置文件进行批量的修改。
任务流编排:类似于编写脚本,对任务的顺序进行编排,人工手动执行过于麻烦
常用自动化运维工具Ansible:红帽公司的员工所研发,后来被红帽公司收购。使用python编写,ansible是无代理的,无代理表示安装ansible的机器可以对成千上万台机器进行管理,而被管理的软件无需安装客户端就可以被ansible管理,这主要是因为ansible是基于ssh- ...
互联网DNS架构的实现
互联网DNS架构的实现互联网中dns的架构为下图所示,当本地的DNS服务器无法解析域名时就会向互联网上的dns服务器去迭代查询,直到找到相应的服务器位置。
以下为具体的实现方式
环境准备
主机
OS
IP
www
centos6
192.168.73.2
client
centos6
192.168.73.3
mylinuxopsdns1
centos7
192.168.73.10
mylinuxopsdns2
centos7
192.168.73.20
comdns
centos7
192.168.73.30
rootdns
centos7
192.168.73.40
ldns
centos7
192.168.73.50
一、在www主机上部署httpd服务1.启动httpd服务1234[root@www ~]# service httpd startStarting httpd: httpd: apr_sockaddr_info_get() failed for wwwhttpd: Could not reliably determin ...
DNS转发
DNS转发dns转发分为2种,全局转发和特定区域转发。
全局转发是对非本机所负责解析区域的请求,全部转发给指定的服务器。
特定区域转发是仅转发对特定的区域的请求,比全局转发优先级高。
转发分为2种模式:first和only
first模式:先到本地DNS查找,若本地dns查找不到记录,去其他的dns服务器查找,若其他dns服务器也没有,直接去根服务器查找
only模式:先到本地DNS查找,若本地dns查找不到记录,去其他的dns服务器查找,若其他dns服务器也没有,直接放弃。
全局转发的only模式准备客户机一台,dns服务器两台,将dns1服务器的转发地址者设置为dns2,dns1有两个网卡一个是内网,一个是外网,dns2只有一个连接内网的网卡
主机
ip
client
192.168.73.120
dns1
192.168.73.10 172.22.145.220
dns2
192.168.73.30
分别在dns1、dns2上配置dns服务
在dns2上部署配置dns
123456789101112[root@dns2 ~]# y ...
DNS服务
DNS服务DNS全称为Domain Name Service 应用层协议,其架构为C/S架构,在tcp和udp的53号端口。
DNS的实现是BIND(Bekerley Internat Name Domain)
DNS的作用是把域名解析为ip地址,在本地的/etc/hosts文件也能做到域名解析的作用,但不方便管理,只适合小型的企业环境和集群的环境中使用。
DNS解析DNS的查询类型分为两种:递归查询和迭代查询
递归查询:当主机去访问网络中的dns服务器时,其查询的类型为递归查询
迭代查询:当网路中的服务器向dns服务查询FQDN时,dns服务器会从先去向根服务器查询,根服务器会传回一个顶级域所在的位置,然后dns服务器再向顶级域进行查询,顶级域再传回一个二级域的地址,dns服务器再去向二级域查询,最后获得所要查询的FQDN对应的主机的ip地址。这个过程为迭代查询
名称服务器:用来解析本域内的名称的主机,全世界共有13组根服务器。
Bind的相关配置文件1234/etc/named.conf #服务器的配置文件/var/named #DNS数据库路径/usr/lib/sy ...
时间服务和chrony
时间服务和chrony多主机协作工作时,各个主机的时间同步很总要,时间不一致会造成很多重要应用的故障,如:加密协议,日志,集群等,利用NTP协议使网络中的各个计算机时间达到同步。目前NTP协议属于运维基础架构中必备的基本服务之一。
时间同步实现:ntp,chronyntp将系统时间和世界协调时UTC同步,精度在局域网内可达到0.1ms,在互联网上绝大多数的地方精度可以达到1-50ms。目前CentOS6上所使用的就是ntp服务。
chrony为CentOS7上所使用的时间服务,其同步的速度比ntp更快。
ntp服务的部署主机A从互联网上的主机同步时间并作为局域网内的时间服务器使用,主机B自动去向主机A同步时间
环境准备准备A、B、两台主机
主机
系统
ip
A
CentOS6
192.168.73.137
B
CentOS6
192.168.73.136
将主机B的时间调慢
1234[root@HostB ~]# date -s "-10 days"Sun Apr 7 10:50:51 CST 2019[root@HostB ~]# da ...