ansible学习手册(75页).doc
《ansible学习手册(75页).doc》由会员分享,可在线阅读,更多相关《ansible学习手册(75页).doc(75页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-ansible学习手册-第 75 页从Github获取Ansible如果你有一个github账户,可以跟进Ansible在Github的项目:Github project我们在这里保持对bugs和feature ideas的跟踪.需要安装些什么Ansible默认通过 SSH 协议管理机器.安装Ansible之后,不需要启动或运行一个后台进程,或是添加一个数据库.只要在一台电脑(可以是一台笔记本)上安装好,就可以通过这台电脑管理一组远程的机器.在远程被管理的机器上,不需要安装运行任何软件,因此升级Ansible版本不会有太多问题.选择哪一个版本?因为Ansible可以很简单的从源码运行,且不必
2、在远程被管理机器上安装任何软件,很多Ansible用户会跟进使用开发版本.Ansible一般每两个月出一个发行版本.小bugs一般在下一个发行版本中修复,并在稳定分支中做backports.大bugs会在必要时出一个维护版本,虽然这不是很频繁.若你希望使用Ansible的最新版本,并且你使用的操作系统是 Red Hat Enterprise Linux (TM), CentOS, Fedora, Debian, Ubuntu,我们建议使用系统的软件包管理器.另有一种选择是通过”pip”工具安装,”pip”是一个安装和管理Python包的工具.若你希望跟进开发版本,想使用和测试最新的功能特性,我
3、们会分享如何从源码运行Ansible的方法.从源码运行程序不需要进行软件安装.对管理主机的要求目前,只要机器上安装了 Python 2.6 (windows系统不可以做控制主机),都可以运行Ansible.主机的系统可以是 Red Hat, Debian, CentOS, OS X, BSD的各种版本,等等.对托管节点的要求On the managed nodes, you only need Python 2.4 or later, but if you are running less than Python 2.5 on the remotes, you will also need:托
4、管节点上需要安装 Python 2.4 及以上的版本.但如果版本低于 Python 2.5 ,则需要额外安装一个模块: python-simplejsonNote没安装python-simplejson,也可以使用Ansible的”raw”模块和script模块,因此从技术上讲,你可以通过Ansible的”raw”模块安装python-simplejson,之后就可以使用Ansible的所有功能了.Note如果托管节点上开启了SElinux,你需要安装libselinux-python,这样才可使用Ansible中与copy/file/template相关的函数.你可以通过Ansible的yu
5、m模块在需要的托管节点上安装libselinux-python.NotePython 3 与 Python 2 是稍有不同的语言,而大多数Python程序还不能在 Python 3 中正确运行.而一些Linux发行版(Gentoo, Arch)没有默认安装 Python 2.X 解释器.在这些系统上,你需要安装一个 Python 2.X 解释器,并在 inventory (详见Inventory文件) 中设置 ansible_python_interpreter 变量指向你的 2.X Python.你可以使用 raw 模块在托管节点上远程安装Python 2.X.Red Hat Enterpr
6、ise Linux, CentOS, Fedora, and Ubuntu 等发行版都默认安装了 2.X 的解释器,包括几乎所有的Unix系统也是如此.安装管理主机从源码运行从项目的checkout中可以很容易运行Ansible,Ansible的运行不要求root权限,也不依赖于其他软件,不要求运行后台进程,也不需要设置数据库.因此我们社区的许多用户一直使用Ansible的开发版本,这样可以利用最新的功能特性,也方便对项目做贡献.因为不需要安装任何东西,跟进Ansible的开发版相对于其他开源项目要容易很多.从源码安装的步骤$ git$ cd ./ansible$ source ./hacki
7、ng/env-setup如果没有安装pip, 请先安装对应于你的Python版本的pip:$ sudo easy_install pip以下的Python模块也需要安装:$ sudo pip install paramiko PyYAML Jinja2 httplib2注意,当更新ansible版本时,不只要更新git的源码树,也要更新git中指向Ansible自身模块的 “submodules” (不是同一种模块)$ git pull -rebase$ git submodule update -init -recursive一旦运行env-setup脚本,就意味着Ansible从源码中运行
8、起来了.默认的inventory文件是文件也可以另行指定 (详见Inventory文件). code-block: bash$ echo “127.0.0.1” /ansible_hosts $ export ANSIBLE_HOSTS=/ansible_hosts你可以在手册的后续章节阅读更多关于 inventory 文件的使用,现在让我们测试一条ping命令:$ ansible all -m ping -ask-pass你也可以使用命令 “sudo make install”通过Yum安装最新发布版本通过Yum安装RPMs适用于EPEL6, 7, 以及仍在支持中的Fedora发行版.托管节
9、点的操作系统版本可以是更早的版本(如 EL5), 但必须安装 Python 2.4 或更高版本的Python.Fedora 用户可直接安装Ansible, 但RHEL或CentOS用户,需要配置 EPEL# install the epel-release RPM if needed on CentOS, RHEL, or Scientific Linux$ sudo yum install ansible你也可以自己创建RPM软件包.在Ansible项目的checkout的根目录下,或是在一个tarball中,使用makerpm命令创建RPM软件包. 然后可分发这个软件包或是使用它来安装An
10、sible.在创建之前,先确定你已安装了rpm-build,make, andpython2-devel.$ git$ cd ./ansible$ make rpm$ sudo通过Apt (Ubuntu)安装最新发布版本Ubuntu 编译版可在PPA中获得: 配置PPA及安装ansible,执行如下命令:$ sudo apt-get install software-properties-common$ sudo apt-add-repository ppa:ansible/ansible$ sudo apt-get update$ sudo apt-get install ansibleNo
11、te在早期Ubuntu发行版中, “software-properties-common” 名为 “python-software-properties”.也可从源码checkout中创建 Debian/Ubuntu 软件包,执行:$ make deb你或许也想从源码中运行最新发行版本,可看前面的说明.通过 Portage (Gentoo)安装最新发布版本$ emerge -av app-admin/ansible要安装最新版本,你或许需要.$ echo app-admin/ansibleNote若在Gentoo托管节点中,Python 3 默认作为 Python slot(这也是默认设置),
12、则你必须在你的 group 或 inventory 变量中设置ansible_python_interpreter=/usr/bin/python2通过 pkg (FreeBSD)安装最新发布版本$ sudo pkg install ansible你或许想从ports中安装:$ sudo make -C /usr/ports/sysutils/ansible install通过 Homebrew (Mac OSX)安装最新发布版本在Mac中安装,确定你已安装 Homebrew:$ brew update$ brew install ansible通过 Pip 安装最新发布版本Ansible可通
13、过 “pip” 安装(安装和管理Python包的工具),若你还没有安装 pip,可执行如下命令安装:$ sudo easy_install pip然后安装Ansible:$ sudo pip install ansible如果你是在 OS X Mavericks 上安装,编译器可能或告警或报错,可通过如下设置避免这种情况:$ sudo CFLAGS=-Qunused-arguments CPPFLAGS=-Qunused-arguments pip install ansible使用 virtualenv 的读者可通过 virtualenv 安装 Ansible, 然而我们建议不用这样做,直接
14、在全局安装 Ansible.不要使用 easy_install 直接安装 ansible.发行版的Tarball不想通过git checkout 创建Ansible的软件包?在这里可获取TarballAnsible downloads各种版本的Ansible在这里做了版本标注git repository前言现在你已经阅读了Installation安装指南并安装了Ansible.是时候通过一些命令开始深入了解Ansible了.我们最先展示的并非那强大的集配置,部署,自动化于一身的playbook. Playbooks 相关内容将在另一章节中讲述.本章节讲述如何进行初始化.一旦你有了这些概念,请去
15、阅读Introduction To Ad-Hoc Commands以获取更多细节,然后你就能去深入playbook并探索它最有趣的部分.远程连接概述在我们开始前要先理解Ansible是如何通过SSH与远程服务器连接是很重要的.及之后的版本默认会在本地的 OpenSSH可用时会尝试用其进行远程通讯.这会启用ControlPersist(一个性能特性),Kerberos,和在/.ssh/config中的配置选项如 Jump Host setup.然而,当你使用Linux企业版6作为主控机(红帽企业版及其衍生版如CentOS),其OpenSSH版本可能过于老旧无法支持ControlPersist.
16、在这些操作系统中,Ansible将会退回并采用 paramiko (由Python实现的高质量OpenSSH库). 如果你希望能够使用像是Kerberized SSH之类的特性,烦请考虑使用Fedora, OS X, 或 Ubuntu 作为你的主控机直到相关平台上有更新版本的OpenSSH可供使用,或者启用Ansible的“accelerated mode”.参见Accelerated Mode.在Ansible 1.2 及之前的版本,默认将会使用 paramiko. 本地OpenSSH必须通过-c ssh 或者 在配置文件中设定.你偶尔会遇到不支持SFTP的设备.虽然这很少见,但你会有概率中
17、奖.你可以通过在配置文件(Ansible的配置文件)中切换至 SCP模式来与之链接.说起远程设备,Ansible会默认假定你使用 SSH Key(我们推荐这种)但是密码也一样可以.通过在需要的地方添加 ask-pass选项 来启用密码验证.如果使用了sudo 特性,当sudo需要密码时,也同样适当的提供了ask-sudo-pass选项.也许这是常识,但也值得分享:任何管理系统受益于被管理的机器在主控机附近运行.如果在云中运行,可以考虑在使用云中的一台机器来运行Ansible.作为一个进阶话题,Ansible不止支持SSH来远程连接.连接方式是插件化的而且还有许多本地化管理的选项诸如管理 chr
18、oot, lxc, 和 jail containers.一个叫做ansible-pull的模式能够反转主控关系并使远程系统通过定期从中央git目录检出 并 拉取 配置指令来实现背景连接通信.你的第一条命令现在你已经安装了Ansible,是时候从一些基本知识开始了. 编辑(或创建)/etc/ansible/hosts 并在其中加入一个或多个远程系统.你的public SSH key必须在这些系统的authorized_keys中:这里有个节点设置文件(inventory file)将会在Inventory文件中得到深入说明. 我们假定你使用SSH Key来授权.为了避免在建立SSH连接时,重复输
19、入密码你可以这么 做:$ ssh-agent bash$ ssh-add /.ssh/id_rsa(根据你的建立方式,你也许希望使用Ansible的-private-key选项,通过指定pem文件来代替SSH Key来授权) 现在ping 你的所有节点:$ ansible all -m pingAnsible会像SSH那样试图用你的当前用户名来连接你的远程机器.要覆写远程用户名,只需使用-u参数. 如果你想访问 sudo模式,这里也有标识(flags)来实现:# as bruce$ ansible all -m ping -u bruce# as bruce, sudoing to root$
20、 ansible all -m ping -u bruce -sudo# as bruce, sudoing to batman$ ansible all -m ping -u bruce -sudo -sudo-user batman(如果你碰巧想要使用其他sudo的实现方式,你可以通过修改Ansible的配置文件来实现.也可以通过传递标识给sudo(如-H)来设置.) 现在对你的所有节点运行一个命令:$ ansible all -a /bin/echo hello恭喜你!你刚刚通过Ansible连接了你的所有节点.很快你就会阅读更多的关于现实案例Introduction To Ad-Hoc
21、 Commands并探索可以通过不同的模块做什么以及研究Ansible的playbook语言Playbooks.Ansible不只是能运行命令,它同样也拥有强大的配置管理和部署特性.虽然还有更多内容等待你的探索,但你基础设施已经能完全工作了!公钥认证及其之后的版本都会默认启用公钥认证.如果有个主机重新安装并在“known_hosts”中有了不同的key,这会提示一个错误信息直到被纠正为止.在使用Ansible时,你可能不想遇到这样的情况:如果有个主机没有在“known_hosts”中被初始化将会导致在交互使用Ansible或定时执行Ansible时对key信息的确认提示.如果你想禁用此项行为并
22、明白其含义,你能够通过编辑来实现:defaultshost_key_checking = False或者你也可以通过设置环境变量来实现:$ export ANSIBLE_HOST_KEY_CHECKING=False同样注意在paramiko 模式中 公钥认证 相当的慢.因此,当使用这项特性时,切换至SSH是推荐做法.Ansible将会对远程系统模块参数记录在远程的syslog中,除非一个任务或者play被标记了“no_log: True”属性,稍后解释. 在主控机上启用基本的日志功能参见Ansible的配置文件文档 并 在配置文件中设置log_path.企业用户可能也对Ansible Tow
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ansible 学习 手册 75
限制150内