ansible
马哥Ansible中文权威指南
Ansible官方文档
ansible可以做什么
它是“配置管理工具”、“自动化运维工具”。
可以完成一些批量任务,或者完成一些经常场重复的工作。例如:在10台机器上安装nginx服务,并启动;将某个文件一次性拷贝到10台服务器上。
获取这些工作也可以使用脚本来完成,但是ansible具有一些优秀的特性,例如:会比较“当前状态”与“目标状态”是否一致,若不一致,会将“当前状态”编程“目标状态”;若一致,则不进行任何操作,这种特性被称为 幂等性。而且ansible只需要ssh即可正常工作,不需要在受管机器上安装agent端;以及将受管机器的IP信息添加在ansible的管理清单中。
ansible没有客户端,因此底层通信依赖系统软件,Linux下基于OpenSSH,windows下基于PowerShell,管理端必须是Linux系统。使用者在管理节点通过ansible将指令推送到被管理端执行,在执行完毕后自动删除产生的临时文件。
安装ansible
在一台服务器上安装ansible,这台主机就作为“配置管理主机”,其他主机作为“受管主机”。
1 2 3 4 5 6 7 8 9 10 11 12 13
| [aliBase] name=aliBase baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/ enabled=1 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/RPM-GPG-KEY-CentOS-$releasever # cat aliEpel.repo [aliEpel] name=aliEpel baseurl=https://mirrors.aliyun.com/epel/$releasever\Server/$basearch/ enabled=1 gpgcheck=0
|
- 【注】可以从阿里巴巴开源镜像站进行添加yum源,在下载源时可能会出现
1 2
| 正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 失败:未知的名称或服务。 wget: 无法解析主机地址 “mirrors.aliyun.com”
|
解决方法:配置DNS1 2
| # /etc/resolv.conf nameserver 8.8.8.8
|
安装anxible
验证安装ansible --version
。
python多环境扩展管理
pyenv
python版本管理工具
安装
1 2 3 4 5 6 7 8 9
| # 安装依赖 yum -y install gcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel git # 安装pyenv git clone https://github.com/pyenv/pyenv.git ~/.pyenv # 修改环境变量 echo 'export PATH=~/.pyenv/bin:$PATH' >> .bashrc echo 'export PYENV_ROOT=~/.pyenv' >> .bashrc echo 'eval "$(pyenv init -)"' >> .bashrc source .bashrc
|
验证安装pyenv --version
1 2 3 4 5 6 7 8 9 10 11 12
| pyenv install -l 查看所有可安装的python版本 pyenv install 3.4.1 安装指定版本 pyenv uninstall 3.4.1 卸载指定版本 pyenv local 3.4.1 切换当前目录为指定版本 pyenv local --unset 取消设置本地版本 pyenv shell 3.4.1 设置当前会话的python版本 pyenv shell --unset 取消设置当前会话版本 pyenv global 3.4.1 切换全局目录为指定版本 pyenv versions 查看已安装版本,当前使用的版本前会加上*号 pyenv version 查看当前使用的python版本 pyenv rehash 刷新python已安装列表 pyenv commands 列出所有可用的pyenv命令
|
例如安装3.7.6时下载速度非常慢,这时我们可以手动下载python3.7.6的源码包Python-3.7.6.tar.xz将这个包放在~/.pyenv/cache中,然后在执行pyenv install 3.7.6。
可以一次将多个版本指定为全局Python(当前shell也可以这样设置)。
1 2 3 4 5 6 7 8 9 10 11
| $ pyenv global 2.7.6 3.3.3 $ pyenv versions system * 2.7.6 (set by /Users/yyuu/.pyenv/version) * 3.3.3 (set by /Users/yyuu/.pyenv/version) $ python --version Python 2.7.6 $ python2.7 --version Python 2.7.6 $ python3.3 --version Python 3.3.3
|
如果更喜欢3.3.3而不是2.7.6
1 2 3 4 5 6 7 8 9 10 11 12
| $ pyenv global 3.3.3 2.7.6 $ pyenv versions system * 2.7.6 (set by /Users/yyuu/.pyenv/version) * 3.3.3 (set by /Users/yyuu/.pyenv/version) venv27 $ python --version Python 3.3.3 $ python2.7 --version Python 2.7.6 $ python3.3 --version Python 3.3.3
|
pyenv-virtualenv
是一个pyenv的插件,可以对pyenv中的python创建虚拟环境。
1 2 3
| git clone https://github.com/yyuu/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile source ~/.bash_profile
|
1 2 3 4 5 6
| pyenv virtualenv 3.7.6 3-7-6test1 #将会在$(pyenv root)/versions下基于3.7.6创建一个virtualenv 3-7-6test1 pyenv virtualenv test2 #将会基于当前使用的python版本创建一个test2的virtualenv pyenv virtualenvs #列出当前所有的virtualenv,每个virtualenv有两个条目,短的是一个链接 pyenv activate <virtualenv-name> #使用指定virtualenv的虚拟环境 pyenv deactivate #退出虚拟环境 pyenv uninstall <virtualenv-name> #删除指定虚拟环境
|