1. 程式人生 > >Ansible安裝及常用模塊

Ansible安裝及常用模塊

用戶密碼 新增 keygen 用法 用戶組 state uid 主機列表 mman

配置文件:/etc/ansible/ansible.cfg

主機列表:/etc/ansible/hosts

安裝anslibe

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum -y install ansible

配置文件先備份

技術分享圖片

技術分享圖片

修改配置文件hosts添加主機組 (分組)

技術分享圖片

如果要遠程連接需要配置用戶名和密碼或密鑰(兩種方式都可以)

用戶密碼:

[webtest]
192.168.32.132 ansible_ssh_user=root ansible_ssh_pass=登錄密碼
192.168.32.131 ansible_ssh_user=root ansible_ssh_pass=登錄密碼

密鑰:

生成私鑰和公鑰 ssh-keygen -t rsa -P ‘‘

技術分享圖片

註意文件權限:

[root@localhost .ssh]# cp id_rsa.pub authorized_keys
[root@localhost .ssh]# ll
total 16
-rw-r--r-- 1 root root  408 Mar 14 22:32 authorized_keys
-rw------- 1 root root 1679 Mar 14 22:32 id_rsa
-rw-r--r-- 1 root root  408 Mar 14 22:32 id_rsa.pub
-rw-r--r-- 1 root root  352 Mar 14 22:20 known_hosts
[root@localhost .ssh]
# chmod 600 authorized_keys [root@localhost .ssh]# ll authorized_keys -rw------- 1 root root 408 Mar 14 22:32 authorized_keys

公鑰分別發送到被管理的主機:

scp authorized_keys 192.168.32.132:/root/.ssh/
scp authorized_keys 192.168.32.131:/root/.ssh/

測試OK:

技術分享圖片

常用模塊:

註意:command和shell模塊的核心參數直接為命令本身;而其它模塊的參數通常為“key=value”格式

-m command (如下沒寫-m command 是因為默認模式是 command)

ansible測試:ping模塊測試連通性

技術分享圖片

第一個要做的就是時間同步:

首先使用ansible的yum模塊批量安裝ntpdate服務

ansible all -m yum -a "state=present name=ntpdate"

批量刪除兩種方式:

ansible all -m yum -a "state=removed name=ntpdate"
ansible all -m yum -a "state=absent name=ntpdate"

指定節點安裝及刪除:

安裝:ansible 192.168.32.131 -m yum -a "state=present name=ntpdate"

刪除:ansible 192.168.32.131 -m yum -a "state=remove name=ntpdate"

時間同步:

ansible all -a ntpdate ntp1.aliyun.com

獲取模塊列表:ansible-doc -l

獲取指定模塊的使用幫助:ansible-doc -s MOD_NAME

創建用戶:

技術分享圖片

copy模塊:復制文件到遠程主機

用法:

(1) 復制文件

-a "src=原地址 dest=目標地址 mode=644 權限 "

(2) 給定內容生成文件

-a "content= dest= "

技術分享圖片

復制文件:

src原地址 dest目標地址 mode權限

註:如果文件存在將覆蓋原文件,並沒有提示操作需小心。

ansible all -m copy -a "src=/etc/ansible/hosts.bak dest=/opt/ mode=600"

file模塊:

用法:

(1) 創建目錄:

-a "path= state=directory"

(2) 創建鏈接文件:

-a "path= src=\‘#\‘" /p>

(3) 刪除文件:

-a "path= state=absent“

修改文件用戶組屬性:

ansible all -m file -a "path=/tmp/hosts.bak mode=644 owner=root group=root"

創建目錄及修改屬性:

創建目錄
ansible webtest -m file -a "path=/opt/work state=directory"
修改組屬性
ansible webtest -m file -a "path=/opt/work mode=755 owner=root group=root"

創建軟鏈:

ansible all -m file -a "src=/opt/hosts.bak path=/tmp/hosts.link state=link"

技術分享圖片

刪除軟鏈:

ansible all -m file -a "path=/tmp/hosts.link state=absent"

fetch模塊:從遠程主機取文件

批量取:
ansible all -m fetch -a "src=/opt/hosts.bak dest=/root"
指定主機取:
ansible 192.168.32.131 -m fetch -a "src=/opt/hosts.bak dest=/root"

技術分享圖片

cron模塊:管理計劃任務條目

用法:

-a ""

minute=

hour=

day=

month=

weekday=

job=

name=

user=

state={present|absent}

創建一個同步時間的計劃任務,每5分鐘同步一下服務器的時間

ansible all -m cron -a "minute=‘*/5‘ job=‘/usr/sbin/ntpdate ntp1.aliyun.com &> /dev/null‘ name=‘時間同步‘"

技術分享圖片

刪除計劃任務:

ansible all -m cron -a "name=‘時間同步‘ state=absent"

hostname模塊:管理主機名

用法:

name=

ansible 192.168.32.131 -m hostname -a "name=CentOS_7"

技術分享圖片

yum模塊:使用yum命令完成程序包管理

用法:首先,確定主機的yum源是可用的 yum info samba

-a ""

(1) name= state={present|latest}

(2) name= state=absent

批量安裝samba
ansible all -m yum -a "name=samba" 或 ansible all -m yum -a "name=samba state=present  |   latest"
查看安裝狀態
ansible all -a "yum info samba"
刪除samba
ansible all -m yum -a "name=samba state=absent"

service模塊:服務管理

用法:

-a ""

name=

state=

started

stopped

restarted

enabled=

runlevel=

安裝httpd

ansible all -m yum -a "name=httpd"

啟動httpd

ansible all -m service -a "name=httpd state=started enabled=true"

技術分享圖片

關閉httpd服務

ansible all -m service -a "name=httpd state=stopped enabled=false"

技術分享圖片

group模塊:增加或刪除組

用法:

-a ""

name=

state=

system=

gid=

創建組
ansible all -m group -a "name=ggg system=true"
刪除組
ansible all -m group -a "name=ggg state=absent"

user模塊:用戶管理

使用格式:

name= : 創建的用戶名

state= : present新增,absent刪除

force= : 刪除用戶的時候刪除家目錄

system= : 創建系統用戶

uid= : 指定UID

shell= : 指定shell

home= : 指定用戶家目錄

創建用戶
ansible all -m user -a "name=ggg system=true"
查看
ansible all -a "id ggg"
刪除用戶
ansible all -m user -a "name=ggg state=absent"

setup模塊:收集主機裏面的各種信息

信息太多,指定一臺收集
ansible 192.168.32.131 -m setup

Ansible安裝及常用模塊