Ansible安裝及常用模塊
配置文件:/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安裝及常用模塊