1. 程式人生 > >linux自動化運維平臺ansible部署

linux自動化運維平臺ansible部署

linux自動化運維 ansible

前言

運維的發展方向,集中化,自動化,標準化,虛擬化,分布式。
本文展示的就是自動化運維的發展方向的工具:ansible。ansible有很多優點,僅需要ssh和python即可使用,不需要客戶端,功能強大,模塊豐富,上手容易門檻低,基於python開發,更容易做二次開發。

操作使用環境:

[root@luc ~]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core) 

結構拓撲圖
技術分享圖片

安裝軟件和其他準備工作

可以源碼安裝,或者yum安裝

下面是個人使用的ansible 軟件,解壓後可以直接作為yum源使用
鏈接: https://pan.baidu.com/s/1hFly3DnPS01ih60kSh5CIQ 密碼: 6ge6

宿主機:

[root@luc ~]# unzip ansible.zip                             //解壓
[root@luc ~]# mkdir -p  /var/ftp/yum/myyum       
//主要是創建yum源目錄,用ftp共享給其他主機使用,但是前提要有ftp服務,也可以使用http服務共享yum
[root@luc ~]# mv  ansible/\*  /var/ftp/yum/myyum   
//把解壓的文件拷貝到ftp共享的目錄下

主機:manager10

[root@manager10 ~]# yum-config-manager --add ftp://192.168.1.1/yum/myyum    
//添加新的yum
[root@manager10 ~]# yum clean all                    // 清除yum緩存
[root@manager10 ~]# yum repolist   
源標識                         源名稱                                           狀態
192.168.1.1_yum_myyum_         added from: ftp://192.168.1.1/yum/myyum/            16
192.168.1.1_yum_rh7dvd_        added from: ftp://192.168.1.1/yum/rh7dvd/        4,620
repolist: 4,636
[root@manager10 ~]# yum -y install ansible               //用yum安裝ansible
[root@manager10 ~]# rpm -qc ansible             
//查看配置文件有哪些,實用技能,不知道配置文件軟件也可以用這條命令查詢配置文件
/etc/ansible/ansible.cfg
/etc/ansible/hosts
[root@manager10 ~]# vim /etc/hosts           //設置本機的DNS解析
192.168.1.10 manager10                            //ip地址和域名之間用空格隔開
192.168.1.20 nginx20
192.168.1.30 web30
192.168.1.40 web40
192.168.1.50 db50
192.168.1.60 db60
[root@manager10 ~]# ssh-keygen -t rsa    //創建密鑰對,後面要用

註:需要關閉selinux和firewalld

配置文件

配置文件:
/etc/ansible/ansible.cfg
/etc/ansible/hosts
可以按照如下修改配置文件。

[root@manager10 ~]# vim /etc/ansible/hosts 
[web]                //定義web組
web30  //組成員,可以使用域名或者ip地址,我把主機名和域名寫成一樣,方便記憶使用
web40
[db]                                     //定義db組
db50
db60
[app:children]            //定義父組app,及指定子組
web
db
[app:vars]        //父組app下所有成員,配置信息,包括登陸用戶和密碼
ansible_ssh_user="root"
ansible_ssh_pass="123456"
[nginx]  
nginx20  ansible_ssh_user="root" ansible_ssh_pass="123456"
 //定義nginx主 ,配置內容分別表示:組成名名,登陸用戶名,登陸密碼。 還可以制定登陸端口ansible_ssh_port="22"
[root@manager10 ~]# vim /etc/ansible/ansible.cfg      //ansible 配置文件
host_key_checking = False                 
//61行的註釋去掉,不讀取/root/.ssh/known_hosts 文件,就不用首次登陸輸入yes

ansible的使用

ansible配置完成,不需要啟動服務,可以直接使用。
執行命令後的提示顏色,如果沒有內容修改成功顯示的顏色是綠色,如果內容修改並且成功顯示顏色是橙色。

[root@manager10 ~]# ansible all --list-hosts   
  hosts (5):
    web30
    web40
    db50
    db60
    nginx20
//查看所有可以配置的主機,或者可以直接查看web,db。出現下面內容,沒有報錯就是沒有問題。

使用模塊
ansible命令格式
ansible 主機分組 -m 模塊 -a ‘命令和參數’
使用ansible-doc 模塊名 查看模塊幫助信息
ansible-doc -l 列出所有模塊

[root@manager10 ~]# ansible all -m ping     //使用ping模塊,查看是否在線
web40 | SUCCESS => {                               //出現seccess就是成功了
    "changed": false,                                   //沒有修改內容
    "ping": "pong"                                       //ping和pong是一對
}
[root@manager10 ~]# ansible all  -m authorized_key -a "user=root exclusive=true manage_dir=true key=‘$(< /root/.ssh/id_rsa.pub)‘" -k
// 給所有主機部署密鑰, -m module 模塊    -a agrs 模塊的參數    -k   ask需要輸入密碼

常用模塊:
shell ,copy,yum,service

[root@manager10 ~]# ansible web -m shell -a "mkdir /root/aaaa"      //在web組下的web30和web40下創建/root/aaaa目錄
[root@manager10 ~]# ansible web -m shell -a "ls /root"    //驗證創建情況
[root@manager10 ~]# ansible web -m shell -a "ls /root"
[root@manager10 ~]# ansible web -m copy -a "src=/root/test.txt dest=/root/"
//將本地文件復制到遠程主機,拷貝文件夾時,src如果有“/“ 結尾拷貝目錄下內容,和rsync類似
[root@manager10 ~]# ansible web -m yum -a "name="httpd" state=installed"   //安裝httpd,刪除是removed
[root@manager10 ~]# ansible web -m service -a "name="httpd" enabled="yes" state="started""      //開啟httpd服務,開機自啟
[root@manager10 ~]# yum -y install nmap        //安裝掃描軟件nmap
[root@manager10 ~]# nmap -sS 192.168.1.30,40     //使用nmap半開式掃描
Nmap scan report for web30 (192.168.1.30) 
Host is up (0.000090s latency).
Not shown: 998 closed ports        //默認掃描前10000個端口
PORT   STATE SERVICE
22/tcp open  ssh          //ssh開啟
80/tcp open  http        //web開啟
MAC Address: 74:52:86:86:02:01 (Unknown)  

其實到現在ansible自動化運維平臺部署基本完成,接下來就是ansible的靈活使用。

共勉:I hear and I forget. I see and I remember. I do and I understand!

linux自動化運維平臺ansible部署