ansible 自动化工具 open ssh手动创建公钥密钥
一共三步,创建密钥,分发公钥,开始连接。
1、ssh-keygen -t rsa (ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '') 这种就没有提示,直接创建。
2、ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.19.42
3、ssh 192.168.19.42 (也可以在后面加命令,例如 ls hostname等等 )
接着第一步无提示创建密钥后,然后实现无yes或no直接分发公钥。
sshpass -p\iso9001 ssh-copy-id -oStrictHostKeyChecking=no root@192.168.19.48
#!/bin/bash #author :david.z #version: v1 #desc: 一键创建密钥对 分发密钥对 #1.vars pass=\iso9001 ips="192.168.19.48 192.168.19.42 192.168.19.37 192.168.19.45 192.168.19.39 192.168.19.40 192.168.19.43 192.168.19.51" . /etc/init.d/functions #1.4 判断是否联网或是否可以使用yum #1.5 加入判断sshpass命令是否存在,如果不存在则安装 #2.创建密钥对 if [ -f ~/.ssh/id_rsa ] ;then echo "已经创建过密钥对" else echo "正在创建密钥对。。。" ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' &>/dev/null if [ $? -eq 0 ];then action "密钥创建成功" /bin/true else action "密钥创建失败" /bin/false fi fi #3.通过循环分发公钥 for ip in $ips do sshpass -p${pass} ssh-copy-id -i ~/.ssh/id_rsa.pub -oStrictHostKeyChecking=no $ip &>/dev/null if [ $? -eq 0 ];then action "$ip 公钥分发成功" /bin/true else action "$ip 公钥分发失败" /bin/false fi #echo "$ip 密钥已经发送" done
上面为一键分发密钥脚本。可以自动分发密钥,同时多台分发公钥。
如下效果显示。
自动化管理工具 ansible.
安装 yum install -y ansible
修改配置文件。
[root@dgp-KMS scripts]# egrep -v '^$|#' /etc/ansible/ansible.cfg
[defaults]
host_key_checking = False
log_path = /var/log/ansible.log
[inventory]
[privilege_escalation]
[paramiko_connection]
[ssh_connection]
[persistent_connection]
[accelerate]
[selinux]
[colors]
[diff]
修改默认分组文件。
vim /etc/ansible/hosts
试一下ping,绿色代表正常,红色或者紫色代表异常。
如何创建data组包含已有的组呢?
单独试一下data组的ping
安装好了ansible之后,然后就是做主机列表。
做好了主机列表,然后要学会ansible的模块,一共有很多种模块,要学很久的,学好了模块就可以做剧本了。
这里放一个我做的NFS自动化部署的剧本。
首先要在ansible上 建立主机列表,首先自己建立一个playbook的目录,然后把剧本yml和主机表放在里面。如图
然后就可以在里面写剧本了。 我一共写了4个剧本,全部分享出来。
第一个是测试剧本。
--- - hosts: web tasks: - name: 01 打开冰箱门 shell: echo 01 >>/tmp/bingxiang/log - name: 02 把大象放入冰箱 shell: echo 02 >>/tmp/bingxiang/log - name: 03 关上冰箱的门 shell: echo 03 >>/tmp/bingxiang/log
第二个.
- hosts: web tasks: - name: 01 创建目录 file: path: /server/files/ state: directory - name: 02 分发文件 copy: src: /etc/hosts dest: /server/files/
第三个。这个是批量安装zabbix客户端agent.
- hosts: web tasks: - name: 01. 下载软件包 get_url: url: "https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-agent-6.0.7-1.el7.x86_64.rpm" validate_certs: no dest: /tmp/ - name: 02. 安装软件包 yum: name: /tmp/zabbix-agent-6.0.7-1.el7.x86_64.rpm state: present - name: 03. 配置 debug: msg: "进行配置zabbix-agent" - name: 04. 启动 systemd: name: zabbix-agent enabled: yes state: started
第四个,重点,自动部署NFS服务器和客户端。而且同时部署两台NFS服务器。
#nfs服务端部署 - hosts : nfs tasks: - name: 01. 部署nfs-utils,rpcbind yum: name: nfs-utils,rpcbind state: present - name: 02. 修改配置文件 lineinfile: path: /etc/exports line: "/backup-nfs 192.168.19.0/24(rw,all_squash)" create: true - name: 03. 创建共享目录并改所有者 file: path: /backup-nfs owner: nfsnobody group: nfsnobody state: directory - name: 04-1. 启动服务rpcbind,nfs(注意顺序) systemd: name: rpcbind enabled: yes state: started - name: 04-2. 启动服务rpcbind,nfs(注意顺序) systemd: name: nfs enabled: yes state: started #nfs客户端部署 - hosts: web tasks: - name: 01. 部署nfs-utils yum: name: nfs-utils state: present - name: 02. 挂载nfs mount: src: 192.168.19.48:/backup-nfs path: /ans-upload state: mounted fstype: nfs - name: 03. 挂载nfs mount: src: 192.168.19.51:/backup-nfs path: /ans-upload2 state: mounted fstype: nfs
排除#号显示ansible配置文件。