Loading... <p> Ansible <span style="font-family:宋体">是一个免费的用于配置和管理计算机的的软件平台。它集成了软件部署,</span>ad hoc<span style="font-family:宋体">任务执行,和管理配置的功能。它依赖</span>Python2.4<span style="font-family:宋体">之后的版本和通过</span>SSH<span style="font-family:宋体">或者</span>PowerShell<span style="font-family:宋体">管理节点。模块工作在</span>JSON<span style="font-family:宋体">格式,输出信息可以被任何编程语言再次编写。系统管理员可以使用</span>YAML<span style="font-family:宋体">来描述系统的可用状态</span> ( The system uses <span style="color:windowtext">YAML</span> to express reusable descriptions of systems.)</p> <p> <span style="font-family:宋体">这个平台由</span>Michael DeHaan<span style="font-family:宋体">所创建。</span>Micahael DeHaan<span style="font-family:宋体">是系统提供工具</span> Cobbler<span style="font-family:宋体">的作者和提供远程管工具理</span>Func<span style="font-family:宋体">框架的合著者。它被包含在</span>Fedora<span style="font-family:宋体">发行版里面,同时也可以被</span>RHEL<span style="font-family:宋体">,</span>CentOS<span style="font-family:宋体">和</span>Scientific Linux<span style="font-family:宋体">和其它操作系统使用。</span>2015<span style="font-family:宋体">年,</span>10-16<span style="font-family:宋体">,</span>Red hat<span style="font-family:宋体">宣布它已经取得了</span>ansible<span style="font-family:宋体">的所有权。</span></p> <p><span style="font-family:宋体">为什么被称作</span>Ansible<span style="font-family:宋体">?</span></p> <p><span style="font-family:Arial;color:#252525;background:white">I</span>t was named "Ansible" after the <span style="color:windowtext">fictional instantaneous hyperspace communication system</span> featured in <span style="color:windowtext">Orson Scott Card</span>'s<span style="color:windowtext">Ender's Game</span>,<span style="color:windowtext">[9]</span> and originally invented by <span style="color:windowtext">Ursula K. Le Guin</span> for her 1966 novel <span style="color:windowtext">Rocannon's World</span>.</p> <p><span style="font-family:Arial;color:#252525;background:white"> </span></p> <p><span style="font-size: 20px">1、架构(Architecture)</span></p> <p><span style="font-family:Arial;color:#252525;background:white"> </span><span style="font-family: 宋体;color:#252525;background:white">就像许多配置管理软件一样,</span><span style="font-family:Arial;color:#252525;background: white">Ansible</span><span style="font-family:宋体;color:#252525;background:white">区分两种不同类型的服务器:</span><span style="font-family:宋体;color:red;background: white">控制器</span><span style="font-family:宋体;color:#252525;background:white">和</span><span style="font-family:宋体;color:red;background:white">节点</span><span style="font-family:宋体;color:#252525;background:white">。首先</span><span style="font-family:Arial;color:#252525;background:white">,</span><span style="font-family:宋体;color:#252525;background:white">一个控制器作为编排</span><span style="font-family:Arial;color:#252525;background:white">(orchestration)</span><span style="font-family:宋体;color:#252525;background:white">开始的地方,然后节点由控制器通过</span><span style="font-family:Arial;color:#252525;background:white">SSH</span><span style="font-family:宋体;color:#252525;background:white">管理。控制器通过它的清单文件</span><span style="font-family:Arial;color:#252525;background:white">(inventory)</span><span style="font-family:宋体;color:#252525;background:white">描述节点的位置。</span></p> <p><span style="font-family:Arial;color:#252525;background:white"> </span><span style="font-family: 宋体;color:#252525;background:white">为了编排节点,</span><span style="font-family:Arial;color:#252525;background: white">Ansible</span><span style="font-family:宋体;color:#252525;background:white">通过</span><span style="font-family:Arial;color:#252525;background: white">SSH</span><span style="font-family:宋体;color:#252525;background:white">在节点上部署模块</span><span style="font-family:Arial;color:#252525;background: white">(Ansible deploys modules to nodes over SSH)</span><span style="font-family:宋体;color:#252525;background:white">。模块暂时存储在节点然后和通过</span><span style="font-family:Arial;color:#252525;background:white">JSON</span><span style="font-family:宋体;color:#252525;background:white">协议产生标准输出和控制节点通信。当</span><span style="font-family:Arial;color:#252525;background:white">Ansible</span><span style="font-family:宋体;color:#252525;background:white">没有管理节点的时候,它也不会消耗任何资源,因为后台没有</span><span style="font-family:Arial;color:#252525;background: white">Ansible </span><span style="font-family:宋体;color:#252525;background:white">的</span><span style="font-family:Arial;color:#252525;background: white">daemon</span><span style="font-family:宋体;color:#252525;background:white">或程序在执行。</span></p> <p><span style="font-family:Arial;color:#252525;background:white"> </span><span style="font-family: 宋体;color:#252525;background:white">对比其它流行的配置管理软件,例如</span><span style="font-family:Arial;color:#252525;background: white">Chef</span><span style="font-family:宋体;color:#252525;background:white">,</span><span style="font-family:Arial;color:#252525;background: white">Puppet</span><span style="font-family:宋体;color:#252525;background:white">,和</span><span style="font-family:Arial;color:#252525;background: white">CFEnine</span><span style="font-family:宋体;color:#252525;background:white">,</span><span style="font-family:Arial;color:#252525;background: white">Ansible</span><span style="font-family:宋体;color:#252525;background:white">使用无状态的架构。基于</span><span style="font-family:Arial;color:#252525;background: white">Agent</span><span style="font-family:宋体;color:#252525;background:white">的架构,节点必须在本地安装一个</span><span style="font-family:Arial;color:#252525;background: white">daemon</span><span style="font-family:宋体;color:#252525;background:white">来和控制器通信。而无</span><span style="font-family:Arial;color:#252525;background: white">Agent</span><span style="font-family:宋体;color:#252525;background:white">的架构,节点不需要安装和运行任何后台</span><span style="font-family:Arial;color:#252525;background:white">daemons</span><span style="font-family:宋体;color:#252525;background:white">来连接控制节点。而无</span><span style="font-family:Arial;color:#252525;background:white">Agent</span><span style="font-family:宋体;color:#252525;background:white">的架构减少了节点不断</span><span style="font-family:Arial;color:#252525;background:white">polling</span><span style="font-family:宋体;color:#252525;background:white">控制器时候的网络负载。</span></p> <p><span style="font-family:Arial;color:#252525;background:white"> </span></p> <p><span style="font-size: 18px"><span style="font-family: 宋体">1.1设计目标</span>:</span></p> <p>Ansible<span style="font-family: 宋体">的设计目标包括:</span></p> <p><span style="font-family:宋体">最小化原则</span>(<strong><span style="font-family:Arial;color:#252525;background:white">Minimal in nature.</span></strong>)<span style="font-family:宋体">管理系统应尽量减少额外的依赖关系。</span></p> <p><span style="font-family:宋体">一致性</span>(<span style="font-family:宋体">声明需要</span>)</p> <p><span style="font-family:宋体">安全</span>. Ansible<span style="font-family:宋体">不部署不安全的</span>Agent<span style="font-family:宋体">。只需要</span>OpenSSH<span style="font-family:宋体">即可,而</span>OpenSSH<span style="font-family:宋体">是被测试过的。</span></p> <p><span style="font-family:宋体">高可靠性</span> <span style="font-family: 宋体">幂等性模型防止重新执行脚本的副作用。</span></p> <p><span style="font-family:宋体">低学习门槛。</span>Playbook<span style="font-family:宋体">使用一个容易的和容易描述的基于</span>YMAL<span style="font-family:宋体">的语言。</span></p> <p><span style="font-family: 宋体;font-size: 18px">1.2模块:</span></p> <p><span style="font-family:宋体">模块被看做</span>Ansible<span style="font-family:宋体">的基本工作单元。每个模块都是独立的,同时可以被任何脚本语言编写,例如</span>Python,Perl,Ruby,bash<span style="font-family:宋体">等等。模块的属性之一是幂等性,这意味着尽管某一操作执行了无数次,但是系统还是停留在相同的状态。</span></p> <p><span style="font-size: 18px"><span style="font-family: 宋体">1.3清单配置</span>(Inventory Configurations)</span></p> <p> <span style="font-family:宋体">清单用于描述可以被</span>Ansible<span style="font-family:宋体">访问的节点。这个清单默认被一个配置文件描述,位于</span>/etc/ansible/hosts<span style="font-family:宋体">。这个配置文件列出可以被</span>Ansible<span style="font-family:宋体">访问的</span>IP<span style="font-family: 宋体">地址或者每个主机的主机名。另外,节点也可以被分配到一个组里面。</span></p> <p><span style="font-family:宋体">下面看一个例子</span>:</p> <pre class="brush:bash;toolbar:false">192.168.6.1 [webservers] foo.example.com bar.example.com</pre> <p><span style="font-family:宋体">这个配置文件指定了三个节点。第一个通过</span>IP<span style="font-family:宋体">地址指定,后面两个通过主机名指定。另外后面两个节点被划分到</span>webserver<span style="font-family:宋体">组里面了。</span></p> <p>Ansible<span style="font-family: 宋体">也可以执行自定义的动态清单</span>(Dynamic Inventory)<span style="font-family:宋体">脚本,可以从任何软件系统拉取数据让自己使用。</span></p> <p><span style="font-size: 16px"><span style="font-family: 宋体">1.4剧本</span>(Playbook)</span></p> <p>Playbook<span style="font-family: 宋体">在</span>Ansible<span style="font-family:宋体">中表述配置,部署,和编排。</span>Playbook<span style="font-family:宋体">使用</span>YMAL<span style="font-family:宋体">语法,每个</span>playbook<span style="font-family:宋体">映射一组主机到一些角色上。每个角色都是由</span>Ansible<span style="font-family:宋体">任务调用。</span></p> <p> </p> <p><span style="font-family: 宋体;font-size: 20px">2、平台支持:</span></p> <p><span style="font-family:宋体"> 控制节点必须有</span>Python2.6. <span style="font-family:宋体">支持的操作系统包括大部分</span>Linux<span style="font-family:宋体">和</span>Unix<span style="font-family: 宋体">发行版,例如</span>Red Hat<span style="font-family:宋体">,</span>Debian<span style="font-family:宋体">,</span>CentOS<span style="font-family:宋体">,</span>OS X<span style="font-family: 宋体">和</span>BSD<span style="font-family:宋体">等等。</span></p> <p><span style="font-family:宋体"> 管理节点必须有</span>Python2.4<span style="font-family:宋体">或后面的版本。被管理的节点使用</span>Python2.5<span style="font-family:宋体">或更早的包,</span>python-simplejson<span style="font-family:宋体">包需要被安装。在</span>Ansible 1.7<span style="font-family:宋体">版本之后,</span>Ansible<span style="font-family:宋体">也可以管理</span>Windows<span style="font-family:宋体">节点了。</span></p> <p><span style="font-family:宋体">2.1云集成环境</span></p> <p>Ansible<span style="font-family: 宋体">可以部署虚拟化环境和公共和私有云环境</span>,.<span style="font-family:宋体">包括</span>VMvare<span style="font-family:宋体">,</span>OpenStack<span style="font-family:宋体">,</span>AWS<span style="font-family: 宋体">,</span>Rackspace Cloud Servers<span style="font-family:宋体">,</span><span style="color:windowtext">DigitalOcean</span> Droplets, <span style="color:windowtext">Eucalyptus Cloud</span>, <span style="color:windowtext">KVM</span>, <span style="color:windowtext">XenServer</span>, <span style="color:windowtext">SoftLayer</span>, <span style="color:windowtext">Microsoft Azure</span> <span style="font-family:宋体">和</span> <span style="color:windowtext">CloudStack</span></p> <p><span style="font-family:宋体">2.2大数据集成</span></p> <p>Ansible<span style="font-family: 宋体">可以部署大数据,存储和处理分享环境,包括</span><span style="color:windowtext">Hadoop</span>, <span style="color:windowtext">Riak</span>, and <span style="color:windowtext">Aerospike</span><span style="font-family:宋体">。</span>Ansible<span style="font-family:宋体">处理的问题包括管理每个节点的资源消耗。由其是大数据,存储和分析环境需要很高的执行效率和尽可能的消耗少量的</span>CPU<span style="font-family:宋体">时间和内存。更深入的说,</span>Ansible<span style="font-family:宋体">还提供监控功能</span>,<span style="font-family:宋体">测量物理量如</span>CPU<span style="font-family:宋体">资源可以帮助管理这些节点</span></p> <p> </p> <p><span style="font-family: 宋体;font-size: 20px">3、用户:</span></p> <p><span style="font-family:宋体">很多公司都在使用。</span></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信