陈辉煌 发表于 2018-7-30 06:18:51

Ansible的简单介绍入门

Ansible简单说明
  ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
  ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
  (1)、连接插件connectionplugins:负责和被监控端实现通信;
  (2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
  (3)、各种模块核心模块、command模块、自定义模块;
  (4)、借助于插件完成记录日志邮件等功能;
  (5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
Ansible的安装配置

[*]  配置yum源,直接yum安装了
[*]  配置自己的epel源https://mirrors.tuna.tsinghua.edu.cn/help/epel/清华的学生维护的
[*]  http://mirrors.aliyun.com/help/epel阿里的
  #yuminstall ansible –y   安装


  输入ansible -V 可以看到版本信息,说明咱们已经安装成功了


编写咱们的第一个命令
  Inventory 这是需要管理的机器都要按照这个个是写,也就说Hosts里面.
  先这hosts文件中添加一个咱们的测试,玩玩看吧:
可以直接用域名和用ip来表示:  
## green.example.com
  
## blue.example.com
  
## 192.168.100.1
  
## 192.168.100.10
  
可以定义组:
  
##
  
## alpha.example.org
  
## beta.example.org
  
## 192.168.1.100
  
## 192.168.1.110
  
可以定义一段的规则的域名:
  
## www.example.com
  
##
  
##
  
## db01.intranet.mydomain.net
  
## db02.intranet.mydomain.net
  
## 10.25.1.56
  
## 10.25.1.57
  
## db--node.example.com
  我在最后把我的一个服务器地址加入:
  ##
  ##
  ## db01.intranet.mydomain.net
  ## db02.intranet.mydomain.net
  ## 10.25.1.56
  ## 10.25.1.57
  # Here's another example of host ranges, this time there are no
  # leading 0s:
  ## db--node.example.com
  192.168.61.129   #这是我加入的
  接下来咱们运行咱们的第一条命令:
  ansible '192.168.61.129' -m ping –k
  报错误了,提示什么公钥,
  -u:指定连接时的用户名,默认就是root,所以不加该选项也是可以的
  -k:提示输入密码,是--ask-pass的简写形式
  要不修改ansible.cfg配置文件的ask_pass = True给取消注释,要不就在运行命令时候加上-k,这个意思是-k, --ask-pass ask for SSH password。再修改:host_key_checking= False即可,我是直接ssh 192.168.61.129登陆了一次再执行就Ok 了
  # ansible'192.168.61.129' -m ping -k
  SSH password:
  192.168.61.129 | FAILED! => {
  "failed": true,
  "msg":"Using a SSH password instead of a key is not possible because Host Keychecking is enabled and sshpass does not support this.Please add this host's fingerprint to yourknown_hosts file to manage this host."

  ansible '192.168.61.129' -m shell -a 'date' –k   再来一个命令

一个小实验
把公钥发给其他机器,实现免密码登陆
  先这Ansible机器生成密钥对 : ssh-keygen -t rsa -b 2048一路回车

  先搜集登陆的主机的公钥
  Ssh –keyscan命令


  这样就收集完成了
  下面的参数自己百度查看把:
  用到的模块是anthorized_key
  在当前目录新建立了一个ssh-addkey.yml 文件和用到的命令:ansible-playbook

  ansible-playbook ssh-addkey.yml –k   执行这个命令批量推送
  报错了,需要在远端主机运行setenforce 0
  ansible all -m yum -a 'name=libselinux-pythonstate=present' –k   还要安装这个包
  再次运行就OK


  这远端关闭了selinux


  最后执行命令ansible-playbook ssh-addkey.yml -k
  再执行就不用加k 选项了直接不用密码用key来登陆执行:

  实际上也可以用ansible的copy模块这样也可以达到把公钥发给其他主机指定目录,留给大家测试吧:
  ansible all -m copy -a'src=/etc/ansible/ssh-addkey.yml dest=/tmp/ssh_addkey.yml'


  今天就到这里,改天再来聊聊模块,role,task等吧。
  http://docs.ansible.com
  http://docs.jinkan.org/docs/jinja2/
页: [1]
查看完整版本: Ansible的简单介绍入门