# onecup **Repository Path**: onelinkcup/onecup ## Basic Information - **Project Name**: onecup - **Description**: OneCup是一个基于django+celery+ansible的自动化运维工具。实现了对服务器进行集中管理,针对不同的人员分配不同的ansible执行权限,严格管控人员可执行的服务器。项目以Ansible UI为基础,重构代码和框架,开发了权限管理、资源管理、分布式化、软件包管理、定时任务模块、任务执行结果分析等模块。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2024-12-06 - **Last Updated**: 2025-03-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README     OneCup是一个基于django+celery+ansible的自动化运维工具。项目实现了对服务器进行集中管理,针对不同的人员分配不同的ansible执行权限,严格管控人员可执行的ansible系统范围。 项目由Master、Redis、Mysql和分布式AnsibleWorker构成。Master是主控管理台,接收用户请求和结果展现;Redis用于Celery的队列传送和Ansible执行结果保存;Mysql用于数据存储;AnsibleWorker执行Playbook任务。项目具备权限管理、资源管理、分布式化、软件包管理、定时任务模块、任务执行结果分析等功能模块 安装总体流程 1、安装mysql 2、安装redis 3、安装ansibleworker 4、安装master 一、安装mysql 用户创建略 dnf install mysql-server 配置/etc/my.cnf,略 service mysqld start 二、安装redis 第1步:下载安装包 登录http://download.redis.io/releases/ 选择需要安装的版本并下载 cd ~ wget https://download.redis.io/releases/redis-6.2.9.tar.gz tar -xvf redis-6.2.9.tar.gz mv redis-6.2.9 /usr/local/redis-6.2.9 dnf install gcc-c++ gcc -v cd /usr/local/redis-6.2.9 第2步:编译安装 创建redis安装文件夹: mkdir /usr/local/redis 执行安装命令: make install PREFIX=/usr/local/redis/ 复制redis配置文件到指定目录: mkdir /etc/redis mkdir -p /data/redis/log/ mkdir -p /data/redis/data/ cp redis.conf /etc/redis/ 第3步:配置修改 修改配置文件:vi /etc/redis/redis.conf bind * -::* 注:redis服务访问限制设置。使用127.0.0.1表示只能本机访问;如果用的是服务器在局域网里的ip:192.168.1.128,即表示局域网内的ip都可以访问;如果使用0.0.0.0由表示所有地址都可以访问。需要绑定多个时,可以添加多个bind xxx.xxx.xxx.xxx daemonize no ----->daemonize yes 注:PS:daemonize no 这个修改为daemonize yes 开启守护进程.如果Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定 pidfile /var/run/redis.pid logfile ''----->logfile /data/redis/log/redis.log 注:logfile ''' .修改日志保存路径 dir ./ ----->dir /data/redis/data/ #配置持久化文件存放位置 requirepass xxxxx ----->requirepass 你设置的远程连接的密码信息 maxmemory 1024M 注:可以增加maxmemory 1024M来限制redis占用内容大小,也可以不限制 其他配置修改: 开启aof持久化 appendonly yes appendfsync everysec 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose loglevel verbose 修改数据库的数量,reidis默认数据库为0,可以使用SELECT 连接上指定数据库id databases 16 第4步:添加服务 生成软连接: ln -s /usr/local/redis/bin/redis-server /usr/bin/redis-server ln -s /usr/local/redis/bin/redis-cli /usr/bin/redis-cli 把redis安装为服务,设置开机启动 vim /lib/systemd/system/redis.service 加入以下内容: [Unit] Description=redis service Wants=network.target [Service] Type=forking ExecStart=/usr/bin/redis-server /etc/redis/redis.conf [Install] WantedBy=multi-user.target 重新载入 systemctl daemon-reload 设置开机启动 systemctl enable redis 启动redis systemctl start redis 第5步:修改内核参数 sysctl vm.overcommit_memory=1 systemctl restart redis /data/redis/log tail -f redis.log ps -ef|grep redis 三、安装ansibleworker 1、openEuler 22.03.sp1以上操作系统 操作步骤 2、安装依赖包 pip3 install rich pip3 install celery pip3 install redis pip3 install ansible dnf -y install expect dnf -y install sshpass 3、配置ansible.cfg,创建文件 mkdir /etc/ansible cat /etc/ansible/ansible.cfg [defaults] host_key_checking = False [ssh_connection] pipelining = True chmod -R a+rx /etc/ansible 4、安装ansibleworker包 从其他服务器复制ansibleWorker包, 修改配置 REDIS_ADDR = "192.168.105.4" REDIS_PORT = 6379 用于celery连接redis密码 REDIS_PD = "XXXXX" 用于执行playbook连接redis密码 REDIS_PD_URL = quote("xxxx") 5、启动ansiblework chmod -R a+rx /usr/local/lib64/python3.9 chmod -R a+rx /usr/local/lib/python3.9 /home/iotapp/ansibleWorker ./ start.sh 查看日志 cd logs tail -f celery.log 四、Onecup master安装 1、copy项目包OneCup dnf -y install mysql-devel gcc python3-devel 使用root安装依赖 cd /home/app/OneCup/ pip install -r requirements-openeuler2203.txt chmod -R a+rx /usr/local/lib/python3.9 chmod -R a+rx /usr/local/lib64/python3.9 chmod -R a+rx /usr/lib/python3.9/site-packages chmod -R a+rx /usr/lib64/python3.9/site-packages 修改/home/app/OneCup/onecup/setting.py里面的redis和mysql配置 更新mk.sh和run.sh脚本 修改/etc/ssh/ssh_config文件的配置,以后则不会再出现此问题 最后面添加: StrictHostKeyChecking no UserKnownHostsFile /dev/null 重启服务 systemctl restart sshd 安装AnsibleWorker 对应的依赖 修改celery的配置 创建数据库表,需提前在mysql中创建数据库onecup ./mk.sh 创建超级用户 python manage.py createsuperuser ./run.sh