irpas技术客

太厉害了,终于有人能把Ansible讲的明明白白了,建议收藏_互联网老辛_ansible

网络 5866

太厉害了,终于有人能把Ansible讲的明明白白了,建议收藏

文章目录 一: ansible 的概述1. ansible简介2. 官方网站3. ansible 的特点4. ansible的工作机制 二. Asible的安装1. 设置EPEL仓库2. 使用yum安装Ansible3. 查看ansible的版本ansible的命令参数 三. ansible的使用1. 基于端口,用户,密码定义主机清单测试主机的连通性 2. 基于ssh密钥来访问定义主机清单设置密钥 拷贝密钥并测试修改hostsansible远程执行命令测试案例1: 检查节点的内存情况案例2:给节点增加用户 四. ansible的高级用法1. ansible的常用模块1) ansible的3个远程模块的区别案例1:使用shell模块的案例案例2:使用script 模块 2) copy模块的使用案例1: 把ansible主机的/etc/hosts 拷贝到主机组机器中的/root/下 3. file模块案例5 给文件设置权限 4. stat模块获取远程文件信息案例6 获取文件信息 5. get_url 模块案例7 6. yum模块案例8 使用yum模块安装httpd 7. cron模块远程管理主机crontab配置案例9: 增加每30分钟执行 echo"我是互联网老辛" 8. service 远程管理主机系统服务模块案例10 使用service模块重启httpd 9. user模块 管理远程主机的用户案例11: 使用user模块创建一个用户itlaoxin 五. ansible 实战案例实战一: 使用playbook 批量部署多台LAMP环境搭建思路第一步:安装httpd软件第二部:安装MySQL第三步:安装PHP和php-mysql模块第四步:提供php的测试页第五;定义组名第六:使用playbook创建一个LAMP构建的任务 实战二: 使用ansible部署k8s及集群总结

一: ansible 的概述 1. ansible简介

Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具。

它用Python写成,类似于saltstack和Puppet,但是有一个不同和优点是我们不需要在节点中安装任何客户端。

它使用SSH来和节点进行通信。Ansible基于 Python paramiko 开发,分布式,无需客户端,轻量级,配置语法使用 YMAL 及 Jinja2模板语言,更强的远程命令执行操作。

2. 官方网站

https://·f #改变数据存放目录改: 2 datadir=/var/lib/mysql 改为:2 datadir=/mydata/data/ [root@ansible data]# systemctl start mariadb 第三步:安装PHP和php-mysql模块 [root@ansible ~]# yum -y install php php-mysql 第四步:提供php的测试页 [root@ansible ~]# vim /var/www/html/index.php [root@ansible ~]# cat /var/www/html/index.php <?php phpinfo(); ?>

[root@ansible ~]# systemctl reload httpd #启动httpd服务

httpd测试:http://192.168.43.162

确保已经出现上面的测试页,而且,要看到MySQL已经被整合进来了,才能进行下一步操作

第五;定义组名

[root@ansible ~]# vim /etc/ansible/hosts #还使用之前定义好的,这里不用修改

[webservers] 192.168.1.163 192.168.1.71

然后,将公钥信息复制到被控制节点,ansible和两个节点间通过ssh进行连接。下面3个命令之前已经做过,不用执行了。

[root@ansible ~]# ssh-keygen [root@ansible ~]# ssh-copy-id root@192.168.1.163 [root@ansible ~]# ssh-copy-id root@192.168.1.71 第六:使用playbook创建一个LAMP构建的任务

1、创建相关文件

[root@ansible ~]# mkdir -pv /etc/ansible/lamp/roles/{prepare,httpd,mysql,php}/{tasks,files,templates,vars,meta,default,handlers}

我们将上面搭建成功的LAMP环境的httpd和MySQL的配置文件拷贝到对应目录下

[root@ansible ~]# cd /etc/ansible/ [root@ansible ansible]# cp /etc/httpd/conf/httpd.conf lamp/roles/httpd/files/ [root@ansible ansible]# cp /etc/my.cnf lamp/roles/mysql/files/ [root@ansible ansible]# 写prepare(前期准备)角色的playbooks [root@ansible ansible]# vim lamp/roles/prepare/tasks/main.yml [root@ansible ansible]# cat lamp/roles/prepare/tasks/main.yml - name: delete yum config shell: rm -rf /etc/yum.repos.d/* #删除原有的yum配置文件 - name: provide yumrepo file shell: wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #下载新的yum配置文件 - name: clean the yum repo shell: yum clean all #清除原有的yum缓存信息 - name: clean the iptables shell: iptables -F #清除原有防火墙规则,不然后可能上不了网 [root@ansible ansible]#

2、构建httpd的任务

[root@ansible ansible]# cd /etc/ansible/lamp/roles/ [root@ansible roles]# mv /var/www/html/index.php httpd/files/ [root@ansible roles]# vim httpd/tasks/main.yml [root@ansible roles]# cat httpd/tasks/main.yml [root@ansible roles]# cat httpd/tasks/main.yml - name: web server install yum: name=httpd state=present #安装httpd服务 - name: provide test page copy: src=index.php dest=/var/www/html #提供测试页 - name: delete apache config shell: rm -rf /etc/httpd/conf/httpd.conf #删除原有的apache配置文件,如果不删除,下面的copy任务是不会执行的,因为当源文件httpd.conf和目标文件一样时,copy命令是不执行的。如果copy命令不执行,那么notify将不调用handler。 - name: provide configuration file copy: src=httpd.conf dest=/etc/httpd/conf/httpd.conf #提供httpd的配置文件 notify: restart httpd #当前面的copy复制成功后,通过notify通知名字为restart httpd的handlers运行

3、构建httpd的handlers

[root@ansible roles]# vim httpd/handlers/main.yml [root@ansible roles]# cat httpd/handlers/main.yml - name: restart httpd service: name=httpd enabled=yes state=restarted [root@ansible roles]#

4、部署我们的MariaDB数据库

创建MySQL服务的任务,需要安装MySQL服务,改变属主信息,启动MySQL

[root@ansible roles]# cd /etc/ansible/lamp/roles/ [root@ansible roles]# vim mysql/tasks/main.yml [root@ansible roles]# cat mysql/tasks/main.yml -name: install the mysql yum: name=mariadb-server state=present #安装mysql服务 - name: mkdir date directory shell: mkdir -p /mydata/data #创建挂载点目录 - name: provide configration file copy: src=my.cnf dest=/etc/my.cnf #提供mysql的配置文件 - name: chage the owner shell: chown -R mysql:mysql /mydata/ #更改属主和属组 - name: start mariadb service: name=mariadb enabled=yes state=started #启动mysql服务

5、构建PHP的任务

[root@ansible roles]# vim php/tasks/main.yml - name: install php yum: name=php state=present #安装php - name: install php-mysql yum: name=php-mysql state=present #安装php与mysql交互的插件

6、定义整个的任务

[root@ansible roles]# cd /etc/ansible/lamp/roles/ [root@ansible roles]# vim site.yml [root@ansible roles]# cat site.yml - name: LAMP build remote_user: root hosts: web-servers roles: - prepare - mysql - php - httpd

注:所有yml的配置文件中,空格必须严格对

开始部署:

[root@ansible roles]# ansible-playbook -i /etc/ansible/hosts /etc/ansible/lamp/roles/site.yml

然后,在浏览器中访问这两台节点主机,可以直接访问成功.

总结:做此实验室,需要准备干净环境,selinux、防火墙都要关闭

实战二: 使用ansible部署k8s及集群

安装git命令 [root@itlaoxin162 ~]# yum install git

使用git下载相应的ansible-k8s-insatall 包:

[root@itlaoxin162 ~]# git clone https://github.com/lizhenliang/ansible-install-k8s 正克隆到 'ansible-install-k8s'... remote: Enumerating objects: 157, done. remote: Counting objects: 100% (157/157), done. remote: Compressing objects: 100% (123/123), done. remote: Total 157 (delta 46), reused 114 (delta 20), pack-reused 0 接收对象中: 100% (157/157), 150.68 KiB | 110.00 KiB/s, done. 处理 delta 中: 100

进入到ansbile-install-k8s目录 修改hosts文件,根据规划修改对应IP和名称。

cd ansible-install-k8s [root@itlaoxin162 ansible-install-k8s]# vim hosts [root@itlaoxin162 ansible-install-k8s]# vim group_vars/all.yml

部署命令:

单Master版

ansible-playbook -i hosts single-master-deploy.yml -uroot -k

多master版 ansible-playbook -i hosts multi-master-deploy.yml -uroot -k

总结

ansible入门很简单,需要反复练习,才能熟练。

我是互联网老辛,欢迎点赞收藏,关注我,后期更多精彩内容;


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #ansible #的概述1 #ansible简介2 #官方网站3 #的特点4