#!/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 "$@"