Loading... <h1 id="使用ansible部署lamp环境" style="font-size: 2.6em;margin: 1.2em 0px 0.6em;font-family: inherit;line-height: 1.1;color: inherit">使用Ansible部署LAMP环境</h1> <ul class=" list-paddingleft-2"> <li> <p>使用Ansible部署LAMP环境</p> </li> <li> <p>前言</p> </li> <li> <p>实验环境</p> </li> <li> <p>实验步骤</p> </li> <ul class=" list-paddingleft-2"> <li> <p>配置ssh公钥认证</p> </li> <li> <p>安装ansible</p> </li> <li> <p>配置host iventory</p> </li> <li> <p>创建YAML文件</p> </li> <li> <p>运行Ansible-Playbook并测试</p> </li> </ul> <p></p> <li> <p>总结</p> </li> </ul> <h2 id="前言" style="font-family: inherit;line-height: 1.1;color: inherit;margin: 1.2em 0px 0.6em;font-size: 2.15em">前言</h2> <blockquote><p style="margin-top: 0px;margin-bottom: 0px;font-size: 1em;line-height: 1.6"><span style="font-size: 16px;font-family: 黑体, SimHei">这两天学习了Ansible, 在部署实验环境真的很好用, 今天向大家分享如何使用Ansible部署LAMP环境, 本文不对Ansible的基本使用作解释, 有兴趣的可以查看 </span><span style="font-size: 16px;font-family: 黑体, SimHei">马哥教育翻译: Ansible中文权威指南</span></p> </blockquote> <h2 id="实验环境" style="font-family: inherit;line-height: 1.1;color: inherit;margin: 1.2em 0px 0.6em;font-size: 2.15em"><span style="font-family: 黑体, SimHei">实验环境</span></h2> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6"><code><span style="font-family: 黑体, SimHei;font-size: 16px">今天实验环境比较简单, 所以就不画图了</span></code></p> <table> <thead style="line-height: 1.6"> <tr style="line-height: 1.6" class="firstRow"> <th><span style="font-family: 黑体, SimHei">主机</span></th> <th><span style="font-family: 黑体, SimHei">IP地址</span></th> <th><span style="font-family: 黑体, SimHei">功用</span></th> </tr> </thead> <tbody style="line-height: 1.6"> <tr style="line-height: 1.6"> <td style="padding: 0.5em;line-height: 1.6;vertical-align: top"><span style="font-family: 黑体, SimHei">server1.anyisalin.com</span></td> <td style="padding: 0.5em;line-height: 1.6;vertical-align: top"><span style="font-family: 黑体, SimHei">172.16.1.2</span></td> <td style="padding: 0.5em;line-height: 1.6;vertical-align: top"><span style="font-family: 黑体, SimHei">控制主机</span></td> </tr> <tr style="line-height: 1.6"> <td style="padding: 0.5em;line-height: 1.6;vertical-align: top"><span style="font-family: 黑体, SimHei">web.anyisalin.com</span></td> <td style="padding: 0.5em;line-height: 1.6;vertical-align: top"><span style="font-family: 黑体, SimHei">172.16.1.3</span></td> <td style="padding: 0.5em;line-height: 1.6;vertical-align: top"><span style="font-family: 黑体, SimHei">httpd和php</span></td> </tr> <tr style="line-height: 1.6"> <td style="padding: 0.5em;line-height: 1.6;vertical-align: top"><span style="font-family: 黑体, SimHei">data.anyisalin.com</span></td> <td style="padding: 0.5em;line-height: 1.6;vertical-align: top"><span style="font-family: 黑体, SimHei">172.16.1.4</span></td> <td style="padding: 0.5em;line-height: 1.6;vertical-align: top"><span style="font-family: 黑体, SimHei">MySQL</span></td> </tr> </tbody> </table> <h2 id="实验步骤" style="font-family: inherit;line-height: 1.1;color: inherit;margin: 1.2em 0px 0.6em;font-size: 2.15em">实验步骤</h2> <h3 id="配置ssh公钥认证" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">配置ssh公钥认证</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6"><code><span style="font-size: 16px;font-family: 黑体, SimHei">ansible是agentless类的工具, 通过ssh管理远程主机, 我们需要配置基于公钥认证的ssh</span></code></p> <pre class="prettyprint hljs-light">[root@ansible ~]# ssh-keygen -P '' -f ~/.ssh/id_rsa -t rsa #生成公钥 [root@ansible ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub 172.16.1.3 [root@ansible ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub 172.16.1.4</pre> <h3 id="安装ansible" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">安装ansible</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6"><code><span style="font-size: 16px;font-family: 黑体, SimHei">由于ansible的rpm包只有在epel源主提供, 但是一些所依赖组件却在官方的base2中, 所以我们使用阿里云的镜像站</span></code></p> <pre class="prettyprint hljs-light">[root@ansible ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo [root@ansible ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo [root@ansible ~]# yum install ansible --nogpgcheck -y &> /dev/null && echo success #安装ansible success</pre> <h3 id="配置host-iventory" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">配置host iventory</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6"><code><span style="font-size: 16px;font-family: 黑体, SimHei">将我们所要管理的主机添加到配置文件中</span></code></p> <pre class="prettyprint hljs-light">[root@ansible ~]# vim /etc/ansible/hosts #按需添加以下字段到指定配置文件中 [webservers] #组名 172.16.1.3 #IP [dataserver] 172.16.1.4</pre> <h3 id="创建yaml文件" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">创建YAML文件</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6"><code><span style="font-size: 16px;font-family: 黑体, SimHei">我们通过playbook来指挥主机运行特定操作</span></code><span style="font-size: 16px;font-family: 黑体, SimHei"> <br /></span><code><span style="font-size: 16px;font-family: 黑体, SimHei">注意: 笔者的配置只针对笔者的环境, 如需使用请自行修改</span></code></p> <pre class="prettyprint hljs-light">[root@ansible ~]# vim lamp.yml #创建YAML格式的文件 - hosts: webservers remote_user: root tasks: - name: Install Apache Httpd yum: name={{ item }} state=present disable_gpg_check=yes with_items: - httpd - php - php-mysql - name: Install Configuration File template: src=/root/httpd.conf dest=/etc/httpd/conf/httpd.conf notify: - restart httpd - name: Start Httpd Service service: enabled=true name=httpd state=started handlers: - name: restart httpd service: name=httpd state=restart - hosts: dataserver remote_user: root tasks: - name: Install MySQL Server yum: name=mysql-server state=present disable_gpg_check=yes - name: Install Configuration File template: src=/etc/my.cnf dest=/etc/my.cnf notify: - restart MySQL - name: Start MySQL Server service: name=mysqld state=started handlers: - name: restart MySQL service: name=mysqld state=restarted</pre> <h3 style="font-family: inherit;color: inherit;font-size: 1.7em;margin: 1.2em 0px 0.6em">运行Ansible-Playbook并测试</h3> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em"><img src="//cto.wang/usr/uploads/2016/07/20160703180942-69.gif" alt="Alt text" longdesc="./1460260876835.png" /><img src="//cto.wang/usr/uploads/2016/07/20160703180942-39.png" title="1460263006257286.png" alt="blob.png" /></p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em"><img src="//cto.wang/usr/uploads/2016/07/20160703180942-58.png" title="1460263010354184.png" alt="blob.png" /></p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em"><img src="//cto.wang/usr/uploads/2016/07/20160703180943-45.png" title="1460263014269564.png" alt="blob.png" /></p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em"><img src="//cto.wang/usr/uploads/2016/07/20160703180943-1.png" title="1460263017888504.png" alt="blob.png" /></p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em"><img src="//cto.wang/usr/uploads/2016/07/20160703180943-19.png" title="1460263020851561.png" alt="blob.png" /></p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em"><img src="//cto.wang/usr/uploads/2016/07/20160703180943-47.png" title="1460263028426238.png" alt="blob.png" /></p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em"><img src="//cto.wang/usr/uploads/2016/07/20160703180942-69.gif" alt="Alt text" longdesc="./1460261084654.png" /></p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em"><img src="//cto.wang/usr/uploads/2016/07/20160703180942-69.gif" alt="Alt text" longdesc="./1460261845705.png" /></p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em"><img src="//cto.wang/usr/uploads/2016/07/20160703180942-69.gif" alt="Alt text" longdesc="./1460262154809.png" /></p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em"><img src="//cto.wang/usr/uploads/2016/07/20160703180942-69.gif" alt="Alt text" longdesc="./1460262259705.png" /></p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px"><img src="//cto.wang/usr/uploads/2016/07/20160703180942-69.gif" alt="Alt text" longdesc="./1460262322516.png" /></p> </blockquote> <h2 style="font-family: inherit;color: inherit;font-size: 2.15em;margin: 1.2em 0px 0.6em">总结</h2> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em"><span style="font-size: 16px;font-family: 黑体, SimHei">其实还可以使用role实现, 但是我们这里不做介绍, Ansible上手真的简单, ansible-doc命令查看的帮助也浅显易懂, 写这篇博客前mysql_user模块我是不会使用的, 写到最后的时候随便试一下就成功了, 看来ansible的入门真的很容易。</span></p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px"><span style="font-size: 16px;font-family: 黑体, SimHei">作者水平很低, 如果有错误及时指出, 如果你觉得本文写的好请点一波赞~(≧▽≦)/~<br />作者: AnyISaIln QQ: 1449472454<br />感谢: MageEdu</span></p> </blockquote> <h3 id="运行ansible-playbook并测试" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em"></h3> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信