docker启动ansible环境

安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

在hub.docker上挑选喜欢的ansible版本镜像

ansible/ansible Tags | Docker Hub

下载镜像

docker pull ansible/ansible:centos7

创建公私钥

mkdir /ansible/{ssh,sshpass} -p

ssh-keygen -t rsa -b 2048 -P '' -f /ansible/ssh/id_rsa


#定义IP表
cd /ansible/sshpass
vi hosts.sh
#!/bin/bash
#
declare -a IPS=(
    "192.168.136.132,2289,EK2gV1@+UgrIXX%7p#"
)

#定义脚本
cd /ansible/sshpass
vi free_ssh_push.sh
#!/bin/bash
#
# 加载 hosts.sh 配置文件
source /root/sshpass/hosts.sh

# 循环遍历远程主机
for host in "${IPS[@]}"; do
    # 使用逗号分隔 host 字符串,并将结果存储到数组 fields 中
    IFS=',' read -ra fields <<< "$host"

    # 提取 IP、端口和密码
    ip="${fields[0]}"
    port="${fields[1]}"
    password="${fields[2]}"

    # 检查远程主机的连通性
    if ! ping -c 1 "$ip" &> /dev/null; then
        echo "Failed to connect to $ip:$port. Skipping..."
        continue
    fi

    # 构建 ssh-copy-id 命令
    ssh_copy_id_cmd="/usr/bin/sshpass -p ${password} ssh-copy-id -o StrictHostKeyChecking=no -p ${port} root@$ip"

    # 使用 ssh-copy-id 将公钥推送到远程主机
    echo "Pushing public key to $ip:$port..."
    if ! $ssh_copy_id_cmd; then
        echo "Failed to push public key to $ip:$port."
        continue
    fi

    echo "Public key pushed successfully to $ip:$port."

done



启动镜像

根据需求挂载playbook的存放路径到容器中

-v 宿主机目录:容器目录 \

docker run -td \
--name ansible  \
--restart=always \
-v /ansible/ssh/:/root/.ssh/ \
-v /ansible/sshpass/:/root/sshpass/ \
ansible/ansible:centos7 \
/bin/bash


进入ansible容器
docker exec -it ansible /bin/bash
#执行免密脚本
$ bash /root/sshpass/free_ssh_push.sh

ansible-playbook -i 主机清单文件的路径 --syntax-check debug.yml

--syntax-check :语法检测

ansible的使用这里就不介绍了,网上有很多种

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值