Linux运维自动化学习笔记

1、详细叙述ansible的工作原理

ansible工作原理图1
ansible工作原理图2

以上是两张ansible工作原理图,两张图基本都是在架构图的基本上进行的拓展。从上面的图上可以了解到:

1、管理端支持local 、ssh、zeromq 三种方式连接被管理端,默认使用基于ssh的连接---这部分对应基本架构图中的连接模块;
2、可以按应用类型等方式进行Host Inventory(主机群)分类,管理节点通过各类模块实现相应的操作---单个模块,单条[命令],我们可以称之为ad-hoc;
3、管理节点可以通过playbooks 实现多个task的集合实现一类功能,如web服务的安装部署、数据库服务器的批量备份等。playbooks我们可以简单的理解为,系统通过组合多条ad-hoc操作的配置文件 。

2、使用ansible在多台机器上添加用户

ansible 用户创建
当然,在 ansible 里可以用很多方法创建用户,例如:

ansible test -m shell -a 'useradd apple'
说明: 这个相当在远程主机中用 shell 命令创建用户,一般不推荐

其实,ansilbe 提供了一个 user 模块,用于创建和管理用户。
ansible 官方的user 模块的说明文档。

例如,创建一个有登录shell 的用户,用户名是 apple:
ansible test -m user -a 'name=apple shell=/bin/bash home=/home/apple state=present'
说明:
name 指定创建的用户名
shell 指定用户登录时获得的shell
home 为用户创建 HOME 目录
state 指定是创建还是删除用户,当 state=absent 时,为删除用户

如果需要在多台远程主机中创建用户

如果需要在多台远程主机中创建用户,只需将所有主机添加到一个主机组,再执行一遍上面的命令就可以了
ansible apps -m user -a 'name=apple shell=/bin/bash home=/home/apple/ state=present'
将所有要操作的远程主机添加到主机组 apps 中。

3、用ansible-playbook编译安装nginx服务

一、Ansible-server安装

安装方式:

1、从Ansible项目的GitHub源码库提取出来安装,运行Ansible不需root 权限,也不依赖于其他软件,没有后台进程运行,不需要数据库支撑。

2、使用yum安装,需要有合适的yum源,对于RHEL、CentOS的官方yum源中没有 Ansible安装包,这就需要先安装支持第三方的yum仓库组件,最常用的有EPEL、 Remi、RPMForge等。可国内速度较快的高质量yum源网易 163(http://mirrors.163.com)、阿里源(https://opsx.alibaba.com/mirror
注:这里实验使用的是默认的centos7自带的源,并使用yum直接安装

二、使用yum安装ansible

1、安装ansible yum –y install ansible
2、检查ansible版本: ansible –version

三、设置节点授权的ssh密钥

1、在Ansible服务端生成密钥 ssh-keygen
2、使用ssh-copy-id命令来复制Ansible公钥到节点web1和web2
1)复制Ansible公钥到节点web1 ssh-copy-id -i root@192.168.152.159
2)复制Ansible公钥到节点web2 ssh-copy-id -i root@192.168.152.160

四、配置Ansible定义文件

1、编辑ansible配置文件 vi /etc/ansible/hosts
注:将需要ansible自动化的节点IP添加到这里
2、测试在ansible服务端运行命令(在互相能ping通的情况下)
ansible -m ping 'web-servers'

五、执行shell命令

1)查看ansible节点运行时间(uptime) 
ansible -m command -a "uptime" 'web-servers'
2)查看节点内核版本(uname -r)
ansible -m command -a "uname -r" 'web-servers'
注:以上操作部署已完成ansible服务搭建

六、批量部署nginx服务器

两种Ansible批量部署nginx服务器方式
方式一:yum安装nginx,使用的是epel-release源
方式二:使用nginx.tar压缩包解压安装nginx
1、在/root/目录下创建Ansible YAML文件 vi nginx.yaml
注释:
第1行表示该文件是YAML文件,非必须
第2行定义该playbook针对的目标主机,all表示针对所有主机
第3行定义该playbook所有的tasks集合,比如下面我们定义的3个task
第4行定义一个task的名称,非必须,建议根据task实际任务命名
第5行定义一个状态的action,比如这里使用yum模块实现Nginx软件包的安装
第6行到第9行使用template模板去管理/etc/nginx/nginx.conf文件,owner group定义该文件的属主以及属组,使用validate参数指文件生成后使用nginx -t -c %s命令去做Nginx文件语法验证,notify是触发handler状态,如果同步后,文件 的MD5值有变化会触发ReStart Nginx Service这个handler
第10行到第12行是定义一个handler状态让Nginx服务重启,handler的名称是 ReStart Nginx Service
注:书写yaml文件时,注意左对齐,同级别应在同一列下,并且不能使用Tab键,可以使用空格(随便空格几个都行,但是同一级别必须对齐)
2、检测YAML文件
ansible-playbook nginx.yaml --syntax-check nginx.yaml
3、查看YAML文件任务列表
ansible-playbook nginx.yaml --list-task
4、查看针对哪些主机做操作
ansible-playbook nginx.yaml --list-hosts
5、给两个节点安装epel-release源
ansible web-servers -m shell -a 'yum -y install epel-release' -i /etc/ansible/hosts
6、给两个节点安装nginx
ansible web-servers -m shell -a 'yum -y install nginx' -i /etc/ansible/hosts
7、编辑本地nginx.conf.j2文件
(因为本地没有安装nginx所以没有这个文件需要从节点拷贝到当前/root/下再修改,并以这个修改过的模板来下发给节点)
 注:根据实际情况要求修改(我这里使用的默认)
8、确认信息是否正确
ansible-playbook -i /etc/ansible/hosts nginx.yaml -f 2
9、这样我们就完成了 3台机器的Nginx安装部署,下面需要对主机的Nginx服务进行核查,并且确认生成后nginx.conf中的worker_processes参数的值是否正确,执行命令:
ansible -i /etc/ansible/hosts all -m shell -a 'netstat -utpln |grep 80' -f 2
10、验证:浏览器访问两个节点IP
Web1:http://192.168.152.159
Web2:http://192.168.152.160
注:nginx自动化部署完成!

4、描述域名劫持的解决方法

遇到dns被劫持,让dns服务提供者解决这个问题,是比较矛盾的;因为,劫持者,最有可能的就是他们;另外一种最直接的解决办法就是换用其他dns。
更换dns服务器的方法非常简单,在“设置”-“网络连接”中找到宽带上网的连接,打开网络连接属性,选择Interner 协议(TCP/IP)的属性页里,不要选择自动获取DNS,而要选择“使用下面的DNS服务器地址”,如下图所示,完成后重新连接上网,就可以摆脱服务商对我们的DNS劫持。

更换dns服务器

5、描述DNS的递归查询

(1)递归查询
递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。
如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
客户机和服务器之间的查询是递归查询
是递归查询告诉客户机IP

(2)迭代查询
DNS 服务器另外一种查询方式为迭代查询,DNS 服务器会向客户机提供其他能够解析查询请求的DNS 服务器地址,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止。
服务器之间的查询是迭代查询

6、DNS工作原理详细解析

DNS 的介绍

DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。DNS就是这样的一位“翻译官”,它的基本工作原理可用下图来表示。

DNS介绍
DNS 的过程

关于DNS的获取流程:DNS是应用层协议,事实上他是为其他应用层协议工作的,包括不限于HTTP和SMTP以及FTP,用于将用户提供的主机名解析为ip地址。

具体过程如下:

①用户主机上运行着DNS的客户端,就是我们的PC机或者手机客户端运行着DNS客户端了
②浏览器将接收到的url中抽取出域名字段,就是访问的主机名,比如
http://www.baidu.com/, 并将这个主机名传送给DNS应用的客户端
③DNS客户机端向DNS服务器端发送一份查询报文,报文中包含着要访问的主机名字段(中间包括一些列缓存查询以及分布式DNS集群的工作)
④该DNS客户机最终会收到一份回答报文,其中包含有该主机名对应的IP地址
⑤一旦该浏览器收到来自DNS的IP地址,就可以向该IP地址定位的HTTP服务器发起TCP连接

7、DNS区域转发与全局转发区别与实现方法

如果客户端向DNS服务器发起的解析请求内容不在本服务器上,那么可以设置DNS转发,将解析请求转发到其他DNS服务器。DNS转发分两种情况,一种是只要本地没有解析内容的都转发到指定的DNS服务器上这种转发叫(全局转发),另一种是进行匹配转发,只要解析请求符合定义的某个域,就把该请求转发到指定的DNS服务器上这种转发叫(区域转发):

要实现上面的过程,要在两台DNS上做相应的配置:
  • 在主DNS上要定义转发规则,

  • 开启请求者做递归,否则转发请求不予进行

    recursion yes;
    
  • 第二台DNS上要有相应的域解析库内容

  • 注意:关闭dnssec功能:

    dnssec-enable no;
    dnssec-validation no;
    
配置主DNS转发规则
(1) 全局转发: 对非本机所负责解析区域的请求,全转发给指定的服务器,在/etc/named.conf中options定义
forward first|only;
forwarders { ip;};
(2) 特定区域转发:仅转发对特定的区域的请求,比全局转发优先级高,在 /etc/named.rfc1912.zones中定义区域信息
zone "ZONE_NAME" IN {
type forward;
forward first | only;
forwarders { ip;};
};

下面分别实现这两种转发方式,先看第一种转发:全局转发

全局转发

配主DNS配置文件/etc/named.conf
forward only;
forwarders  { 192.168.214.134; };
dnssec-enable no;
dnssec-validation no;

注意:recursion yes; 主DNS必须要开启递归查询,否则解析请求转发不出去

接收转发DNS端配置:
定义区域文件信息:vim /etc/named.rfc1912.zones
zone "abc123.com" IN {
        type master;
        file "abc123.com.zone";
};
编写区域解析库文件:vim /var/named/abc123.com.zone
$TTL 1D
@       IN      SOA       ns1.abc123.com. amin.abc123.com (
                          2018051507
                          1H
                          5M
                          7D
                          1D)

          IN      NS      ns1.abc123.com.
ns1       IN      A       192.168.214.134
www       IN      A       192.168.214.133
@         IN      A       192.168.214.133
重载DNS并测试:
rndc reload
dig测试:
[root@localhost ~]# dig www.abc123.com @192.168.214.128

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.5 <<>> www.abc123.com @192.168.214.128
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11968
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.abc123.com.            IN  A

;; ANSWER SECTION:
www.abc123.com.     86268   IN  A   192.168.214.133

;; AUTHORITY SECTION:
abc123.com.     86268   IN  NS  ns1.abc123.com.

;; ADDITIONAL SECTION:
ns1.abc123.com.     86268   IN  A   192.168.214.134

;; Query time: 1 msec
;; SERVER: 192.168.214.128#53(192.168.214.128)
;; WHEN: Sun May 20 02:01:31 2018
;; MSG SIZE  rcvd: 82
访问测试
[root@localhost ~]# curl http://www.abc123.com/index.html
<html>
    <body>
www.abc123.com
IP: 192.168.214.133
    </body>
</html>
[root@localhost ~]# cat /etc/resolv.conf 
nameserver 192.168.214.128
区域转发
设置区域转发要在主DNS的named.rfc.1912.zones文件中定义区域信息:
zone "abc123.com"  IN {
        type forward;
        forward only;
        forwarders { 192.168.214.134; };
};
设置后情况一下DNS缓存再重载服务:

rndc flush
rndc reload

测试访问
[root@localhost ~]# curl http://www.abc123.com/index.html
<html>
    <body>
www.abc123.com
IP: 192.168.214.133
    </body>
</html>

8、实现智能DNS

智能DNS解析根据客户机IP地址归属地区域进行区别响应,这里根据ip地址网段实现按ip地址区域解析的过程:
在DNS的主配置文件中定义ACL规则,注意,ACL规则必须定义在named.conf的最前面;
acl是根据从上到下顺序查找匹配的,acl中ip存在包含关系,应该小范围地址段先定义,大网段在后面,如果大网段在上面会使下面有包含关系的小网段不生效

acl beijing {
       192.168.214.0/24;
};

acl jiangsu {
      172.20.110.0/24;
};

acl other {
        any;
};
定义解析库文件
为每个IP地址范围定义单独的解析库文件
[root@dns-1 named]# cp gudaoyufu.com.zone   gudaoyufu.com.zone.beijing
[root@dns-1 named]# cp gudaoyufu.com.zone gudaoyufu.com.zone.jiangsu
记得修改解析库文件的属组为named
将acl与各区域解析库文件关联起来:使用view
注意:一旦采用view,必须把所以的区域信息放在view语句块中,所以named.conf中的这段内容移动到named.rfc1912.zones中
zone "." IN {
        type hint;
        file "named.ca";
};
创建view
先创建单独区域文件,在view中要指定
[root@dns-1 named]# cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.beijing
[root@dns-1 named]# cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.jiangsu
在named.rfc1912.zones.beijing单独的文件中定义如下:
zone "yufu.com" IN {
        type master;
        file "gudaoyufu.com.zone.beijing";
};
在named.rfc1912.zones.jiangsu单独的文件中定义如下:
zone "yufu.com" IN {
        type master;
        file "gudaoyufu.com.zone.jiangsu";
};
在named.conf中定义view
view beijngview {
        match-clients   {beijing;};
        include  "/etc/named.rfc1912.zones.beijing";
};

view jiangsuview {
        match-clients   {jiangsu;};
        include  "/etc/named.rfc1912.zones.jiangsu";
};

view otherview {
        match-clients   {other;};
        include  "/etc/named.rfc1912.zones";

};

这里的other就使用默认的区域文件,上面的view信息也可以直接将etc/named.rfc1912.zones.jiangsu中的内容直接写在view块中

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,904评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,581评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,527评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,463评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,546评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,572评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,582评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,330评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,776评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,087评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,257评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,923评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,571评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,192评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,436评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,145评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容

  • 1. 概述 在网络环境中一般用户只需要在浏览器中输入url如www.sunny.com就可以到对应服务器获取相应的...
    ghbsunny阅读 2,886评论 0 7
  • 1、详细叙述ansible的工作原理 Ansible是一种IT自动化运维工具,它可以配置系统,部署软件以及协调更高...
    stephe_c阅读 265评论 0 0
  • DNS DNS:Domain Name Service 应用层协议(C/S,53/udp, 53/tcp) 域名 ...
    毛利卷卷发阅读 6,812评论 0 6
  • 一、实现从根,com,rj.com 模拟互联网的DNS架构 DNS(Domain Name System,域名系统...
    ssjinyao阅读 1,422评论 0 7
  • 1、西安地处关中地区,易守难攻,战略意义重要。 2、宋代之前的长安气候温和,水源充足,适合人类居住。 3、长安地处...
    217_block阅读 1,199评论 0 0