Ansible 自动化运维(持续更新)

目录

一、常用配置

1.1.1 安装ansible

问题1:ansible 下载报错,显示没有可用的包

二、常用模块(Module)

三、常用剧本(Playbook)

3.1 集群配置免密

3.1.1  编写hosts主机清单

3.1.2  编写剧本

3.1.3  检查剧本语法格式并执行

3.1.4 清单文件提取组ip(常用正则式)


一、常用配置

1.1.1 安装ansible
问题1:ansible 下载报错,显示没有可用的包

原因:缺少epel 源:常见源如阿里源:epel镜像_epel下载地址_epel安装教程-阿里巴巴开源镜像站 (aliyun.com)

解决办法:备份原有yum源后安装yum源

wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

二、常用模块(Module)

三、常用剧本(Playbook)

3.1 集群配置免密

3.1.1  编写hosts主机清单
vim hosts

[masters]
192.168.1.10 ansible_ssh_user='root' ansible_ssh_pass='123'
[workers]
192.168.1.11 ansible_ssh_user='root' ansible_ssh_pass='123'

注意:分组[masters]和[workers]不要更改,此处实现master之间免密,master到worker免密

3.1.2  编写剧本
vim  ssh_configer.yml

---
- name: Configure passwordless SSH  #Play1 制作密匙
  hosts: masters
  tasks:
    - name: Create local directory  #创建临时工作目录,选用ansible工作目录roles下的模板templates目录
      local_action:
        module: file
        path: ./roles/templates/
        state: directory
        mode: 0755
    - name: Generate SSH key pair if not exits          #在mster组生成主机秘钥(公匙、私匙),不存在条件下
      shell: "ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa" #-t rsa:指定生成密钥 RSA 算法;-N '':密码置空;-f 密钥对文件保存路径和文件名
      args:
        creates: ~/.ssh/id_rsa
      delegate_to: "{{ inventory_hostname }}"
    - name: Copy public key file details      #将公匙文件读取,内容注册于变量中
      command:
        cmd: "cat ~/.ssh/id_rsa.pub"
      register: sshinfo
    - set_fact: sshpub={{ sshinfo.stdout }}   #将sshinfo中stdout(标准输出)的值赋给名为 sshpub 的事实变量 
    - name: Add ssh record                    #合并所有master的公匙,形成一个文件
      local_action:
        module: shell
        cmd: echo {{ sshpub }} >>./roles/templates/authorized_keys.j2  #将所有master的公匙追加输出到j2模板文件

- name: Copy SSH public key                  #Play2 分发
  hosts: masters,workers
  tasks:
    - name: Copy SSH public key to other node #分发所有master的公匙
      authorized_key:
        user: root
        state: present
        key: "{{ lookup('file','./roles/templates/authorized_keys.j2') }}"
    - name: Close SSH check                 #关闭初次访问提示询问   
      replace:
        path: /etc/ssh/ssh_config
        regexp: '^.*StrictHostKeyChecking.*$'
        replace: 'StrictHostKeyChecking no'
    - name: Add StrictHostKeyChecking line if not exists #如果没有该参数,进行添加
      lineinfile:
        path: /etc/ssh/ssh_config
        line: 'StrictHostKeyChecking no'
        state: present
    - name: clean up local directory         #清理工作目录及中间文件
      local_action:
        module: file
        path: ./roles/
        state: absent
3.1.3  检查剧本语法格式并执行
ansible-playbook -i hosts ssh_configer.yml --syntax-check
ansible-playbook -i hosts ssh_configer.yml
3.1.4 清单文件提取组ip(常用正则式)
"awk '/^\\[masters\\]/ {f=1; next} /^\\[workers\\]/ {f=0; next} f && $1 ~ /^([0-9]{1,3}\\.){3}[0-9]{1,3}$/{print $1}' hosts"

备注:根据自己实际组名替换上述[]中组名内容,可以过滤出想要的组的ip

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值