ansible部署應用

1.1 Ansible是什麼

Ansible 簡單的說是一個配置管理系統(configuration management system)。你只需要可以使用 ssh 訪問你的服務器或設備就行。它也不同於其他工具,因爲它使用推送的方式,而不是像 puppet 等 那樣使用拉取安裝agent的方式。你可以將代碼部署到任意數量的服務器上!

1.2 Ansible能做什麼

ansible可以幫助我們完成一些批量任務,或者完成一些需要經常重複的工作。
比如:同時在100臺服務器上安裝nginx服務,並在安裝後啓動它們。
比如:將某個文件一次性拷貝到100臺服務器上。
比如:每當有新服務器加入工作環境時,你都要爲新服務器部署某個服務,也就是說你需要經常重複的完成相同的工作。
這些場景中我們都可以使用到ansible。

1.3 Ansible能做什麼

模塊化:調用特定的模塊,完成特定任務有PyYAML,Jinja2(模板語言)三個關鍵模塊支持自定義模塊;基於Python語言實現,部署簡單,基於python和SSH(默認已安裝),agent less
安全,基於OpenSSH,支持playbook編排任務,冪等性:一個任務執行1遍和執行n遍效果一樣,不因重複執行帶來意外情況;無需代理不依賴PKI(無需ssl)可使用任何編程語言寫模塊,YAML格式,編排任務,支持豐富的數據結構,較強大的多層解決方案。

2、Ansible實訓環境

服務器清單
服務器系統 角色 IP
Centos7 x86_64 ansible 192.168.100.100
Centos7 x86_64 host1 192.168.100.101

+++++++ +++++++++++++++++++++++ 我是分割線 +++++++++++++++++++++++++++++++++++++

由於ansible主機和被控制的是已經綁定好了的,所以我們需要全部配置靜態ip,改完後要,重啓網卡才生效。

這裏我用的NAT,然後配置的靜態,不是很瞭解虛擬機的三大網絡模式的,可以看看我的另一篇文章,

非常簡單易懂點擊我查看
在這裏插入圖片描述

另一臺也是一樣的,配置

在這裏插入圖片描述

然後是爲了區分主機,給主機改名

在這裏插入圖片描述
在這裏插入圖片描述

(2)、設置SSH免密登陸

ansible主機
[root@ansible ~]# ssh-keygen -t rsa(執行後一直按回車就行)
[root@ansible ~]# ssh-copy-id ansible主機(輸入yes,然後輸入目標主機密碼)
[root@ansible ~]# ssh-copy-id host1主機(輸入yes,然後輸入目標主機密碼)

(3)安裝ansile軟件

[root@ansible ~]#yum install epel-release
[root@ansible ~]#yum -y install ansible

說明:

安裝ansible軟件只需在ansible控制主機上安裝即可,其他主機不用安裝。

注:這裏我是用的阿里的yum(前提是虛擬機要能連網)

Centos的yum源更換爲國內的阿里雲源
1、備份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

2、下載新的CentOS-Base.repo 到/etc/yum.repos.d/

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

3、之後運行命令生成緩存
yum makecache

在這裏插入圖片描述
在這裏插入圖片描述

1) 、安裝驗證

安裝成功後,可以使用下面命令檢查Ansible的安裝版本:
[root@ansible ~]# ansible --version

在這裏插入圖片描述

2)、配置主機

Inventory文件通常用於定義要管理的主機的認證信息,例如ssh登錄用戶名、密碼以及key相關信息。可以同時操作一個組的多臺主機,組與主機組之間的關係都是通過inventory文件配置。配置文件路徑爲:/etc/ansible/hosts
[root@ansible ~]# vim /etc/ansible/hosts
主機+端口+密鑰
[webserver] 只是一個組名,隨便取名,組名下面就放要管理的主機
192.168.223.110
192.168.223.111
在這裏插入圖片描述

2) 、模塊介紹

Ansible配置文件分析
/etc/ansible/ansible.cfg
Ansible模塊源文件
/usr/lib/python2.7/site-packages/ansible/modules/packaging/os

4、ansible基礎模塊應用

(1)、ping模塊
#ansible all -m ping (這裏我用的all,表示所有組,不同組可以存放不同作用的主機)
說明:
all 表示對所有主機執行操作
-m 模塊參數
ping 模塊調用
在這裏插入圖片描述

(2)、setup模塊

獲取節點詳細信息,包括硬件和軟件信息,如主機IP、環境變量等。
[root@ansible ~]# ansible web -m setup |more
在這裏插入圖片描述
(3)、copy
ansible all -m copy -a 'dest=/opt/ src=/root/test.txt ’
說明:
-m 模塊
-a 參數
dest 目標地址
src 原地址文件
在這裏插入圖片描述
(4)file模塊
新建文件
[root@ansible ~]# ansible all -m file -a “path=/root/testfile.txt state=touch”
說明:
-m 模塊
-a 參數
path= 路徑
state= 命令
在這裏插入圖片描述
新建目錄
[root@ansible ~]# ansible all -m file -a “path=/root/testfile state=directory”
說明:
-m 模塊
-a 參數
path= 路徑
state= 命令
在這裏插入圖片描述
刪除目錄
[root@ansible ~]# ansible all -m file -a “path=/root/testfile state=absent”
在這裏插入圖片描述
(5)、command與shell命令使用
command模塊
[root@ansible ~]# ansible web -m command -a ‘ls /opt’

這裏要特別強調一下,ansible服務不能識別 ll 這種簡寫命令,應該寫他的全稱 ls -l
注意command不通過管道
在這裏插入圖片描述
Shell模塊
[root@ansible ~]# ansible all -m shell -a “cat /etc/passwd |tail -n5”
而shell模塊可以通過管道
在這裏插入圖片描述
[root@ansible ~]# ansible all -m shell -a “ps -ef |grep 22”
在這裏插入圖片描述
(6)script模塊
script 模塊可以幫助我們在遠程主機上執行 ansible 管理主機上的腳本,也就是說,腳本一直存在於 ansible 管理主機本地,不需要手動拷貝到遠程主機後再執行。
[root@ansible ~]# ansible web -m script -a “usertest.sh”

這裏需要腳本,我們就先簡單的寫個shell腳本
在這裏插入圖片描述
在這裏插入圖片描述
(7)、group模塊
[root@ansible ~]# ansible web -m group -a ‘gid=2020 name=test’
刪除
[root@ansible ~]# ansible web -m group -a ‘gid=2020 name=test state=absent’

在這裏插入圖片描述
驗證
[root@ansible ~]# ansible web -m shell -a ‘cat /etc/group’
在這裏插入圖片描述
(8)user模塊
[root@ansible ~]# ansible web -m user -a ‘name=test11’
在這裏插入圖片描述
刪除
[root@ansible ~]# ansible web -m user -a ‘name=test11 state=absent’

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章