Day27-20180530【ansible进阶;DNS】

回顾
1、操作放在task
2、playbook可以使用变量
3、notify配合handler,某个动作发生时触发某个行为
4、变量的来源
(1)命令行
(2)主机清单
(3)playbook
(4)系统自带变量
5、优先级:越精确的,优先级越高
Setup模块
查看被控端的系统信息
vars文件:专门用来存放变量的文件
jinjia2支持的运算
//  整除
**  幂次方
建议在同级目录下创建一个templates目录
注意:template是一个模块,只能用于playbook,不能用于ADhoc(单条ansible命令调用)
通过调用template模块生成模板文件
worker进程数量默认和CPU核心个数一样
ansible_processor_vcpus
优先级次序:
命令行-e定义的变量 > 当前playbook定义的变量 > 主机清单定义的普通变量>主机清单定义的公共变量
setup模块中的变量
ansible_os_family :发行系列
ansible_distribution_major_version :主版本号
ansible_memtotal_mb :
迭代机制
item变量取自with_items列表中的每个文件
role角色
include老旧,已被抛弃
实验:部署nginx服务
1、任务:创建nginx组
group: name=nginx gid=80 system=yes
2、任务:创建nginx用户
user: name=nginx uid=80 group=nginx system=yes shell=/sbin/nologin
3、任务:yum安装装软件包
yum: name=nginx
4、模板:拷贝配置文件
5、任务:启动服务
service: name=nginx state=started
规划子目录
playbook.yml # 调用角色的剧本与roles处于平级目录
roles/
└── httpd/
  ├── tasks/
  │ ├── main.yml # 定义任务顺序
  │ ├── templ.yml # 调用模板文件nginx.conf.j2
  │ ├── group.yml
  │ ├── user.yml
  │ ├── yum.yml
  │ └── start.yml
  └── templates/
      └── nginx.conf.j2
1、同时调用多个角色
2、跨项目调用其他角色的任务 
实验:综合使用
group: name=app system=yes gid=123
user: name=app group=app system=yes shell=/sbin/nolgin uid=123
yum: name=httpd
拷贝模板
cp /etc/httpd/httpd.conf ../templates/httpd.conf.j2
使用模板
template: src=httpd.conf.j2 dest=/etc/httpd/httpd.conf
notify: restart service
变量文件
- username: app
- groupname: app
触发器
-name: restart service
service: name=httpd stat=started enabled=yes
--------------------------------------------------------
DNS
为什么使用DNS?
把全称域名fqdn解析成IP地址
fqdn=hostname+domainname
全称域名=主机名+域名
两种解决方案
分布式解决方案
/etc/hosts
本机自己管理所有的fqdn与IP的映射列表,通过查询自己的映射列表来获取其他主机的IP
集中式解决方案
NIS
将所有的fqdn与IP的映射列表集中在一台主机上,其他主机通过访问这个映射列表来获取其他主机的IP
分布式解决方案
DNS
域的分层
www.magedu.com.
根域 : .
顶级域 :.com.
二级域 :.magedu.com.
上级域记录子域的fqdn地址
权威DNS服务器:存放fqdn地址的服务器
寻找权威DNS服务器的方法:找根域,然后顺着子域一级一级往下找
主从的作用:实现冗余性
查询方法
递归查询:从根一级一级往下找,最后把权威DNS的fqdn地址返回
迭代查询:仅提供推荐的结果
解析类型
正向解析:fqdn --> IP
反向解析:IP --> fqdn
配置邮箱的时候会用到
服务器类型
主服务器:存放fqdn的服务器
从服务器:用来同步主服务器,实现冗余性
缓存服务器、转发器:充当中间代理
yum install bind # 安装DNS服务器软件
rpm -q --script bind # 查询bind软件包的安装后脚本
cp -a /etc/named.conf{,.bak} # 以“保留属性”备份原有配置文件!
systemctl start named.service # 直接启动服务
systemctl enable named.service
systemctl is-enabled named.service
vim /etc/named.conf # 配置文件
vim /etc/named.rfc1912.zones # rfc请求注解,存放区域信息
```
zone "magedu.com" IN {
type master; // 类型
file "magedu.com.zone"; // 存放fqdn的数据库文件
}
```
cd /var/named
cp -a named.localhost magedu.com.zone; # 复制参考模板,注意文件属组必须是named!!
```
$TTL  1D # 1D是一天,相当于86400s
@ # 表示当前的域名本身
magedu.com. # @的等价写法,后面必须带一个 .
master.magedu.com. # 主DNS
admin.magedu.com.
master    IN    A    192.168.30.101 # 相当于[email protected],是管理员的邮箱
0    ;  serial # 数据库的版本号,使用这个数字来判断数据库是否有变化,需要手动更改
1D    ;  refresh
1H    ;  fresh
1H    ;  retry
1W    ;  expire
3H )    ;  minimum
    NS    master # 相当于 magedu.com.  IN  NS  master
www    A    192.168.30.7 # 添加一条A记录,将fqdn解析成IP
```
systemctl reload named # 重新加载DNS配置文件
rndc reload # 重新加载DNS配置文件
SOA记录:起始授权记录,记录当前域中哪个是主DNS服务器,以及此域管理员的邮箱,定义了pull(拉)的时间间隔、失败后的重试间隔、从服务器的数据的过期时长、否定查询结果的缓存时长
资源记录的类型
A
AAAA
CNAME
MX
SOA
PTR
NS
资源记录定义的格式
name  [TTL]  IN  rr_type  value
host www.magedu.com 127.0.0.1
dig www.magedu.com @127.0.01
rpm -ql named
ll /var/log/named.log
53端口:默认绑定了127.0.0.1
vim /etc/named/named.conf
```
listen-on port 53 { localhost; }; # 将本机的所有IP绑定53端口,默认只会将127.0.0.1绑定到53端口
allow-query  { localhost;any; }; # 允许其他机器访问
```

猜你喜欢

转载自www.cnblogs.com/GymUManAlvin/p/9113881.html