1-ansible基本概念

ansible

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”
    解决方法:配置DNS
    1
    2
    # /etc/resolv.conf
    nameserver 8.8.8.8
    安装anxible
    1
    yum install -y ansible
    验证安装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> #删除指定虚拟环境