111 lines
2.5 KiB
Bash
111 lines
2.5 KiB
Bash
#!/bin/bash
|
|
|
|
# Ansible Deploy 部署脚本
|
|
|
|
set -e
|
|
|
|
echo "=== Ansible Deploy 批量部署工具 ==="
|
|
|
|
# 检查依赖
|
|
check_dependencies() {
|
|
echo "检查依赖..."
|
|
|
|
# 检查Go
|
|
if ! command -v go &> /dev/null; then
|
|
echo "错误: Go未安装"
|
|
exit 1
|
|
fi
|
|
echo "✓ Go已安装: $(go version)"
|
|
|
|
# 检查Ansible
|
|
if ! command -v ansible &> /dev/null; then
|
|
echo "警告: Ansible未安装,是否安装? (y/n)"
|
|
read -r answer
|
|
if [ "$answer" = "y" ]; then
|
|
pip install ansible
|
|
else
|
|
echo "警告: Ansible未安装,部分功能可能不可用"
|
|
fi
|
|
else
|
|
echo "✓ Ansible已安装: $(ansible --version | head -1)"
|
|
fi
|
|
|
|
# 检查SSH
|
|
if ! command -v ssh &> /dev/null; then
|
|
echo "错误: SSH未安装"
|
|
exit 1
|
|
fi
|
|
echo "✓ SSH已安装"
|
|
}
|
|
|
|
# 创建目录结构
|
|
create_dirs() {
|
|
echo "创建目录结构..."
|
|
mkdir -p ~/ansible-deploy/{inventory,playbooks,logs}
|
|
echo "✓ 目录已创建"
|
|
}
|
|
|
|
# 初始化配置文件
|
|
init_config() {
|
|
echo "初始化配置文件..."
|
|
|
|
# 复制配置
|
|
if [ ! -f ~/ansible-deploy/config.yaml ]; then
|
|
cp config/config.yaml ~/ansible-deploy/config.yaml
|
|
echo "✓ 配置文件已创建"
|
|
fi
|
|
|
|
# 创建默认inventory
|
|
if [ ! -f ~/ansible-deploy/inventory/hosts ]; then
|
|
cat > ~/ansible-deploy/inventory/hosts << 'EOF'
|
|
# Ansible Inventory File
|
|
# 添加你的主机信息,格式:
|
|
# server1 ansible_host=192.168.1.10 ansible_user=root
|
|
|
|
[webservers]
|
|
web1 ansible_host=192.168.1.10 ansible_user=root
|
|
web2 ansible_host=192.168.1.11 ansible_user=root
|
|
|
|
[dbservers]
|
|
db1 ansible_host=192.168.1.20 ansible_user=root
|
|
|
|
[all:vars]
|
|
ansible_python_interpreter=/usr/bin/python3
|
|
EOF
|
|
echo "✓ Inventory文件已创建"
|
|
fi
|
|
}
|
|
|
|
# 构建项目
|
|
build_project() {
|
|
echo "构建项目..."
|
|
cd /root/ansible-deploy
|
|
go build -o ansible-deploy cmd/main.go
|
|
echo "✓ 构建成功: ansible-deploy"
|
|
}
|
|
|
|
# 安装
|
|
install_project() {
|
|
echo "安装..."
|
|
cp ansible-deploy /usr/local/bin/
|
|
chmod +x /usr/local/bin/ansible-deploy
|
|
echo "✓ 安装成功"
|
|
}
|
|
|
|
# 主函数
|
|
main() {
|
|
check_dependencies
|
|
create_dirs
|
|
init_config
|
|
build_project
|
|
install_project
|
|
|
|
echo ""
|
|
echo "=== 安装完成 ==="
|
|
echo "启动服务: ansible-deploy -port 8080"
|
|
echo "配置文件: ~/ansible-deploy/config.yaml"
|
|
echo "访问地址: http://localhost:8080"
|
|
}
|
|
|
|
main "$@"
|