[Linux]Day27-20180530【Ansible Playbook ; 初识DNS】

【本机主题:Ansible Playbook ; 初识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/linyongfeng/p/9179491.html