Ansible学习笔记2

Ansible是Python开发的自动化运维工具,集合了众多运维工具(Puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置,批量程序部署、批量运行命令等功能。

特点:

1)部署简单;

2)默认使用ssh进行管理,基于Python里的paramiko模块开发;

3)管理端和被管理端不需要启动服务;

4)配置简单、功能强大、拓展性强;

5)能playbook剧本进行多任务的编排;

 

实验准备:

三台机器:一台管理、两台被管理。

主机IP地址备注信息
管理机Master192.168.17.104
被管理机1192.168.17.105
被管理机2192.168.17.106

实验过程:

1)在管理机上安装ansible,被管理机上必须打开ssh服务。

yum install -y epel-release
yum install ansible[root@localhost ~]# ansible --version
ansible 2.9.27config file = /etc/ansible/ansible.cfgconfigured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']ansible python module location = /usr/lib/python2.7/site-packages/ansibleexecutable location = /usr/bin/ansiblepython version = 2.7.5 (default, Jun 20 2023, 11:36:40) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]

 2)实现master对agent的免密登录,只有master上做。(如果这步不做的话,则在后面操作agent时候要加上-k参数传密码,或者在主机清单里传密码。)

ssh-keygenssh-copy-id -i 192.168.17.105
ssh-copy-id -i 192.168.17.106

3)在master上定义主机组,并测试连接性。

 说明:inventory:财产清单,库存等。

在hosts清单中添加两个机器IP地址。

[root@localhost ansible]# tail -3 hosts
[group1]
192.168.17.105
192.168.17.106
[root@localhost ansible]# ansible all -m ping
192.168.17.105 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"
}
192.168.17.106 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"
}

说明:all是所有机器。-m是module的意思,ping是模块。

[root@localhost ansible]# ansible group1 -m ping
192.168.17.106 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"
}
192.168.17.105 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"
}

服务器分组:

ansible通过一个主机清单功能来实现服务器分组。

Ansible的默认主机清单配置文件为/etc/ansible/hosts

 另外,如果服务器比较多的情况下,也可以写:

[nginx]
apache[1:10].aaa.com
nginx[a:z].aaa.com
10.1.1.[11:15]
[root@localhost ansible]# tail -2 hosts
[group1]
192.168.17.[105:106]

然后再用ping模块测试:

[root@localhost ansible]# ansible group1 -m ping
192.168.17.106 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"
}
192.168.17.105 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"
}

再看一个例子:

[nginx]
10.1.1.13:2222

表示的是10.1.1.13这台机器,但是端口是2222端口。

[root@localhost ansible]# tail -3 hosts
[group1]
192.168.17.105
192.168.17.106:2222
[root@localhost ansible]# ansible group1 -m ping
192.168.17.105 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"
}
192.168.17.106 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"
}

别名的写法:

定义10.1.1.12:2222 这台服务器的别名nginx1。

nginx1 ansible_ssh_hosts=10.1.1.13 ansible_ssh_port=2222

没有做免密登录的服务器可以指定用户名和密码

nginx1 ansible_ssh_host=10.1.1.13 ansible_ssh_port=2222 ansible_ssh_user=root ansible_ssh_pass="123456"
nginx2 ansible_ssh_host=10.1.1.12# /etc/ansible/hosts
[nginx]
nginx1
nginx2

说明:密码最好是一个加密字符串。

[root@localhost ansible]# tail -6 hosts
nginx1 ansible_ssh_host=192.168.17.106 ansible_ssh_port=2222 ansible_ssh_user=root ansible_ssh_pass="1q2w3e4r"## db-[99:101]-node.example.com
[group1]
192.168.17.105
nginx1

 别名的测试。

[root@localhost ansible]# ansible group1 -m ping
192.168.17.105 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"
}
nginx1 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"
}

小结:

主机清单的作用:服务器分组。主机清单就是服务器分组。

主机清单的常见功能:

1)可以通过IP范围来分,主机名的名称来分;

2)如果ssh端口不是22,可以传入新端口;

3)没有做免密登录,可以传密码。

不论是哪种环境(免密或不免密,端口是否22),请最终将两台被管理机器加入到group1组即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/90022.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

根据源码,模拟实现 RabbitMQ - 网络通讯设计,自定义应用层协议,实现 BrokerServer (8)

目录 一、网络通讯协议设计 1.1、交互模型 1.2、自定义应用层协议 1.2.1、请求和响应格式约定 ​编辑 1.2.2、参数说明 1.2.3、具体例子 1.2.4、特殊栗子 1.3、实现 BrokerServer 1.3.1、属性和构造 1.3.2、启动 BrokerServer 1.3.3、停止 BrokerServer 1.3.4、处…

基于java swing和mysql实现的汽车租赁管理系统(源码+数据库+文档+运行指导视频)

一、项目简介 本项目是一套基于java swing和mysql实现的汽车租赁管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、项目文档、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经…

NSS [羊城杯 2020]easyser

NSS [羊城杯 2020]easyser 开题。很容易让人觉得环境坏了。 不要慌,无从下手时。看源码、扫目录、抓包。一套操作下来,发现几个可以下手的路由。 /index.php /robots.txt 访问 /star1.php,一说到百度,就猜测是否存在SSRF。 源码中…

手写一个简单爬虫--手刃豆瓣top250排行榜

#拿到页面面源代码 request #通过re来提取想要的有效信息 re import requests import re url"https://movie.douban.com/top250"headers{"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/11…

R语言空气污染数据的地理空间可视化和分析:颗粒物2.5(PM2.5)和空气质量指数(AQI)...

原文链接:http://tecdat.cn/?p23800 由于空气污染对公众健康的不利影响,人们一直非常关注。世界各国的环境部门都通过各种方法(例如地面观测网络)来监测和评估空气污染问题(点击文末“阅读原文”获取完整代码数据&…

【算法与数据结构】112、LeetCode路径总和

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:本题通过计算根节点到叶子节点路径上节点的值之和,然后再对比目标值。利用文章【算法和数据…

【拾枝杂谈】从游戏开发的角度来谈谈原神4.0更新

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello,米娜桑们,这里是君兮_,结合最近的学习内容和以后自己的目标,今天又开了杂谈这个新坑,分享一下我在学习游戏开发的成长和自己的游戏理解,当然现在还是一枚…

Docker容器学习:Dockerfile制作Web应用系统nginx镜像

目录 编写Dockerfile 1.文件内容需求: 2.编写Dockerfile: 3.开始构建镜像 4.现在我们运行一个容器,查看我们的网页是否可访问 推送镜像到私有仓库 1.把要上传的镜像打上合适的标签 2.登录harbor仓库 3.上传镜像 编写Dockerfile 1.文…

前端自学总结

文章目录 一、nodejs1.1、npm配置命令别名 二、JavaScript2.1、javascript注释 一、nodejs 1.1、npm配置命令别名 我们可以使用“node index.js”的方式运行代码 也可以利用npm配置别名的方式运行代码 在package.json中配置别名,利用“npm run 别名”也可以运行 st…

[Android]JNI的基础知识

目录 1.什么是JNI 2.配置JNI开发环境NDK 3.创建Native C类型的项目 4. 了解CMakeLists.txt 文件 5.了解native-lib.cpp 文件 6.在 Android 的 MainActivity 中调用 native-lib.cpp 中实现的本地方法 1.什么是JNI JNI(Java Native Interface)是一…

【ES】Elasticsearch 常见的简单查询

查看es中有哪些索引 请求方式:GET 请求地址:http://localhost:9200 /_cat/indices?v 参数:无 结果: 查看索引全部数据 请求方式:GET 请求地址:http://localhost:9200/index-2023-08/_search 参数&a…

机器学习基础16-建立预测模型项目模板

机器学习是一项经验技能,经验越多越好。在项目建立的过程中,实 践是掌握机器学习的最佳手段。在实践过程中,通过实际操作加深对分类和回归问题的每一个步骤的理解,达到学习机器学习的目的 预测模型项目模板 不能只通过阅读来掌握…