前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ansible初识

ansible初识

作者头像
丁D
发布2022-08-12 21:45:08
6620
发布2022-08-12 21:45:08
举报
文章被收录于专栏:老铁丁D老铁丁D

ansible是什么

ansible是一个配置管理工具,是一个自动化运维工具。

ansible和其他配置管理工具一样,可以帮我们做一写重复的事情,如: 1.给100台服务器安装nginx 2.比如复制1个文件到100个服务器上 3.新的服务器加入,需要安装redis等

当然以上的场景,你会说编写一些脚本就可以完成;但是还是建议使用ansible,因为他有一些特性,如幂等性 幂等性:指操作一次和操作100次结果都是一样的。

ansible中有改变的 输出的信息是黄色的,没有改变的是绿色

代码语言:javascript
复制
ansible 192.168.10.55 -m ping 

上面是一个简单的示例 去ping 192.168.10.55 -m ping是指去调用ping模块

ansible有很多模块,实际工作中,是通过调用模块来帮我们完成任务的(我们要学习常见的模块)

代码语言:javascript
复制
ansible 192.168.10.55 -m ping 

我们要使用上面这个简单的示例,要满足两个要求: 1.要能通过ssh连接到受官主机 2.受官主机的ip等信息要添加到ansible的“管理清单”(文件在/etc/ansible/hosts

安装ansible(这里使用yum)

1.使用yum安装ansible,需要配置epel源,能帮我们自动解决软件包的依赖关系。

代码语言:javascript
复制
rpm -qa|grep epel //检查存不存在epel(不是root用户要sudo) 
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm //安装epel(不是root用户要sudo) 

2.安装ansible

代码语言:javascript
复制
yum install ansible 

简单使用

代码语言:javascript
复制
//配置受管主机(下面是使用ip 要可以自定义名字 但是自定义名字后就不能使用ip了,除非名字和ip都配置,即配置2条) 
192.168.55.66 ansible_port=22 ansible_user=root ansible_ssh_pass=123456 
//简单调用 
ansible 192.168.55.66 -m ping 

ansible基础配置

使用all可以一次性管理配置清单所有的主机

代码语言:javascript
复制
ansible all -m ping 

可以对受管主机进行分组

代码语言:javascript
复制
[test] 
192.168.55.100 ansible_port=22 ansible_user=root ansible_ssh_pass=123456 
ansible test -m ping 
//使用yaml 
all: 
hosts: 
192.168.55.23: 
ansible_port: 22 
ansible_user: root 
ansible_ssh_pass: 123456 
test: 
ansible_host: 192.168.55.100 
ansible_port: 22 
ansible_user: root 
ansible_ssh_pass: 123456 

嵌套分组要使用children

代码语言:javascript
复制
[proA] 
10.1.1.60 
[proB] 
10.1.1.70 
[pro:children] 
proA 
proB 
//使用yaml 
all: 
children: 
pro: 
children: 
proA: 
hosts: 
10.1.1.60: 
proB: 
hosts: 
10.1.1.70: 

模块的基本使用

ansible都是通过模块来,实现各个任务的。

代码语言:javascript
复制
//查看ansible所有的模块 
ansible-doc -l 
//查看具体模块的详情 
ansible-doc -s ping 

fetch 从远程节点抓取文件到本地

使用-a来对模块传递参数

代码语言:javascript
复制
ansible test -m fetch -a "src=/root/app/apache-tomcat-8.5.35/conf/web.xml dest=/root" 

alt
alt

copy 将本地文件上传到远程服务器

file 操作文件,创建/删除 文件,目录,修改文件权限

blockinfile 在文件中插入一段文本,默认是文件尾(这段文本会被标记,标记后可以更新删除)

lineinfile 确保某一行文本存在文本中,,确保某一行文本不存在文本中,,替换某一行

find 可以在远程服务器查找符合的文件,跟find一样

replace

command

shell

cron

service

user,group,yum等

问题

代码语言:javascript
复制
FAILED => Using a SSH password insteadof a key is not possible because Host Key checking is enabled and sshpass doesnot support this. Please add this host'sfingerprint to your known_hosts file to manage this host. 
解决:在ansible 服务器上使用ssh 登陆下/etc/ansible/hosts 里面配置的服务器。然后再次使用ansible 去管理就不会报上面的错误了!但这样大批量登陆就麻烦来。因为默认ansible是使用key验证的,如果使用密码登陆的服务器,使用ansible的话, 
第一步::要不修改ansible.cfg配置文件的ask_pass = True给取消注释,要不就在运行命令时候加上-k,这个意思是-k, --ask-pass ask for SSH password。 
第二步::再修改:host_key_checking= False即可 

免密登录

代码语言:javascript
复制
ansible免密登录 
参考 https://www.jianshu.com/p/fc88132924d5 
all: 
children: 
k8s-master: 
hosts: 
192.168.144.128: 
192.168.144.129: 
ssh-keygen -t rsa -b 2048 -P '' -f /root/.ssh/id_rsa 
ssh-keyscan 192.168.144.128 192.168.144.129 >> /root/.ssh/known_hosts 
- hosts: all 
tasks: 
- name: install ssh key 
authorized_key: user=root 
key="{{ lookup('file', '/root/.ssh/id_rsa.pub') }}" 
state=present 
//密码一样所以加入-k 如果不一样 在hosts文件中要配置各自的密码不需要-k 
ansible-playbook -k -i /etc/ansible/hosts ~/ansible/ssh-addkey.yml 
免密登录就是将管理机的公钥加入被管理机 
第一步 首先在管理机生成密钥对 
ssh-keygen 
第二步 将公钥复制到被管理机 
ssh-copy-id -i /root/.ssh/id_rsa.pub root@xxx.24.xxx.86 
root@xxx.24.xxx.86 被管理机的用户及ip 
第3步 
修改/etc/ansible/ansible.cfg 的 ask_pass 改成false 

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-04-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ansible是什么
  • 安装ansible(这里使用yum)
  • 简单使用
  • ansible基础配置
  • 模块的基本使用
    • fetch 从远程节点抓取文件到本地
      • copy 将本地文件上传到远程服务器
        • file 操作文件,创建/删除 文件,目录,修改文件权限
          • blockinfile 在文件中插入一段文本,默认是文件尾(这段文本会被标记,标记后可以更新删除)
            • lineinfile 确保某一行文本存在文本中,,确保某一行文本不存在文本中,,替换某一行
              • find 可以在远程服务器查找符合的文件,跟find一样
                • replace
                  • command
                    • shell
                      • cron
                        • service
                          • user,group,yum等
                          • 问题
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档