ansible原始碼安裝、普通使用者實現批量控制
一、ansible簡介
ansible是一款自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、chef、func、fabric)的優點,實現了批量系統配置、批量程式部署、批量執行命令等功能。 ansible不需要在遠端主機上安裝client/agents,因為它們是基於ssh來和遠
程主機通訊的。
二、ansible 特點
1 部署簡單,只需在主控端部署Ansible環境,被控端無需做任何操作;
2 預設使用SSH協議對裝置進行管理;
3有大量常規運維操作模組,可實現日常絕大部分操作;
4配置簡單、功能強大、擴充套件性強;
5輕量級,無需在客戶端安裝agent,更新時,只需在操作機上進行一次更新即可;
三、架構圖
環境:
2臺centos7
192.168.0.4主
192.168.0.5被控制
在192.168.0.4上
1、配置本地yumyuan
mkdir /etc/yum.repo/1
mv /etc/yum.repo/C* 1
vi /etc/yum.repos.d/yum.repo
[yum.repo]
name=yum.repo
baseurl=file:///mnt/cdrom
gpgcheck=0
enable=1
yum clear all
yum install gcc -y
yum install python-devel -y
yum install unzip -y
檢視python版本
python --version
2.7.*
下載包:
下載ansibel的tar包 https://releases.ansible.com/ansible/ansible-2.7.2.tar.gz
下載關聯包 https://pypi.org/project/ 加上下面包名
1、setuptools-40.6.2.zip
unzip setuptools-40.6.2.zip
cd setsetuptools-40
python setup.py install
2、pip-18.1.tar.gz
tar xvfz pip-18.1.tar.gz
cd pip-18.1
python setup.py install
3、pycrypto-2.6.1.tar.gz
4、PyYAML-3.11.tar.gz
5、MarkupSafe-0.9.3.tar.gz
6、Jinja2-2.7.3.tar.gz
7、ecdsa-0.11.tar.gz
8、 paramiko-1.15.1.tar.gz
9、simplejson-3.6.5.tar.gz
10、pip install six-1.11.0-py2.py3-none-any.whl
11 pip install ipaddress-1.0.22-py2.py3-none-any.whl
12、pip install asn1crypto-0.24.0-py2.py3-none-any.whl
13、 pip install idna-2.7-py2.py3-none-any.whl
14、pip install enum34-1.1.6-py2-none-any.whl
15、tar xvfz cffi-1.11.5.tar.gz
16、tar xvfz pycparser-2.19.tar.gz
17、pip install cffi-1.11.5-cp27-cp27mu-manylinux1_x86_64.whl
18、pip install cryptography-2.4.2-cp27-cp27mu-manylinux1_x86_64.whl
19、tar xvfz ansible-2.7.2.tar.gz
注意:: 所有的tar包如 第2個一樣 所以有的 *.whl 的進行 pip install 包名 進行安裝
檢查結果: ansible --version
可以看到 ansible的版本2.7
安裝完畢。
安裝參謀連線 :https://www.jianshu.com/p/8ed33efa0139
實驗搭建:
兩臺centos7
192.168.0.4 主(安裝ansible)
192.168.0.5 被監控
1、在所有機器上進行操作
useradd ansible
passwd ansible (密碼123456)
sed -i '$a\ansible ALL=(ALL) NOPASSWD: ALL' /etc/sudoers
2、在192.168.0.4上進行操作:
修改ansible管理機/etc/ansible/ansible.cfg檔案
deprecation_warnings = Flase
command_warnings = False
將客戶端ip加入hosts檔案 可進行分組
vim /etc/ansible/hosts
[組名] 自定義分組
IP
3、su - ansible
ssh-keygen -t rsa
ssh-copy-id -i 192.168.0.4
ssh-copy-id -i 192.168.0.5
部署完畢
命令操作:
1、基礎命令
ansible ip或組 -m command -a '命令'
2、shell 模組
ansible ip -m shell -a "指令碼的絕對路徑"
*** ansible ip -m shell -a "支援管道命令"
3、copy 模組
ansible ip -m copy -a "src=來源目錄/檔案 dest=目標路徑 owner=屬主 group=屬組 mode=0755 許可權"
預設許可權644 如果目標路徑不存在 自動建立
4、cron 模組
ansible ip -m cron -a "name=任務名字隨意 job='任務' 時間例如 weekday=5"
***** "name=名字 state=absent" 取消任務
minute分鐘 可以寫成 mintue='1-10' '1,5,6'
hour 小時 每隔2小時 hour=*/2
day 日期
month 月份
5、service 模組 yum 模組
ansible ip -m yum -a "name=包名(必須精準包名)" 安裝包
ansible ip -m service -a "name=服務 state=started/stopped enabled=yes/no"
******** 所有命令後面加上 --sudo 執行的root許可權
例如: ansible all -m shell -a "/home/ansible/ip.sh" --sudo