ansible 自动化运维
1、环境
1、python虚拟环境
1、安装虚拟环境程序
bash
pip install virtualenv
2、创建虚拟环境
利用 virtualenv [虚拟环境名称] 来创建虚拟Python环境,在虚拟环境里用pip安装的包都会安装到当前的虚拟环境中。
bash
$ virtualenv cms
如果系统里安装了不同的Python版本,可以使用--python来指定虚拟环境的python版本。
bash
$ virtualenv --python /usr/local/webserver/python3.6/bin/python3.6 cms
默认情况下虚拟环境不会依赖系统环境的site-packages,如果想依赖系统环境的site-packages,可以使用--system-site-packages来设置。
bash
$ virtualenv --system-site-packages cms
启动和退出虚拟环境
启动虚拟环境:activate
bash
[...]$ source cms/bin/activate
(cms)[...]$
退出虚拟环境:deactivate
bash
(cms)[...]$ deactivate
[...]$
使用virtualenvwrapper
virtualenvwrapper是virtualenv的扩展工具,可以方便的创建、删除、复制、切换不同的虚拟环境。
bash
$ pip install virtualenvwrapper
virtualenvwrapper提供了如下命令来操作虚拟环境:
-
创建虚拟环境:mkvirtualenv [虚拟环境名称]
-
列出虚拟环境:lsvirtualenv
-
切换虚拟环境:workon [虚拟环境名称]
-
查看当前环境安装了哪些包:lssitepackages
-
进入当前环境的目录:cdvirtualenv [子目录名]
-
进入当前环境的site-packages目录:cdsitepackages [子目录名]
-
控制当前环境是否使用global site-packages:toggleglobalsitepackages
-
复制虚拟环境:cpvirtualenv [source] [dest]
-
退出虚拟环境:deactivate
-
删除虚拟环境:rmvirtualenv [虚拟环境名称]
2、安装ansible
bash
pip install ansblie
#支撑环境
2、第一次尝试
1. 创建inventory配置文件
bash
vi hosts
2. 为配置文件添加数据
bash
alpine01 ansible_host=192.168.174.138 ansible_port=22 ansible_user=username ansible_ssh_pass=userpassword ansible_sudo_exe=su ansible_sudo_pass=password ansible_become_method=su ansible_become_user=root ansible_become_pass=password
alpine02 ansible_host=192.168.174.139 ansible_port=22 ansible_user=username ansible_ssh_pass=userpassword ansible_sudo_exe=su ansible_sudo_pass=password ansible_become_method=su ansible_become_user=root ansible_become_pass=password
配置文件解析
hostname:第一个单词代表主机名
ansible_host:代表主机地址
ansible_port:ssh端口
ansible_user:ssh用户名
ansible_ssh_pass:ssh密码
ansible_sudo_exe:提权命令路径
ansible_become_method:提权命令
ansible_sudo_pass:提权命令密码(错误❌)
ansible_become_user:提权用户
ansible_become_pass:提权命令密码(正确✔)
分组
[testgroup] alpine01 alpine02
使用hosts 组名来表示这一组
或者可以在命令行用 -l 选项限定主机列表:
bash
ansible -l testgroup all -m ping
3. 运行命令
1、 ping
bash
ansible all -m ping -i hosts
## all指所有主机 -m指定模块 -i指定配置文件
2、 sudo 更新
bash
ansible all -a "apk update" -i hosts -b
## -a表示命令 -b表示主动提权