广告
返回顶部
首页 > 资讯 > 后端开发 > Python >【ansible 自动化部署方案】
  • 922
分享到

【ansible 自动化部署方案】

方案ansible 2023-01-31 08:01:46 922人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

更新下122(189)的前端?----front_end.yml更新下122(189)的后端?----back_end.yml一键装机。----WEBenv.yml ssh apache2(源:ubuntu) Mysql5.6 Ngin

更新下122(189)的前端?----front_end.yml
更新下122(189)的后端?----back_end.yml
一键装机。----WEBenv.yml

ssh apache2(源:ubuntu) Mysql5.6 Nginx PHP5.6 (Redis-server php5-redis php5-mysql php5-gd) SVN npm webpack
/var/lib/dpkg

把189的数据库和122的数据库保持一致。
数据库更新到和线上的一样。

把122的前端(后端)和189的前端(后端)保持一致。
把某个文件单独替换下。
把某些文件单独替换下。
给一份sql备份,要把它导入189(122)中。

//把122的前后端和189的前后端保持一致。
//备份下122(189)环境的数据库。
//返回部署前的一个版本。

通过Apt (Ubuntu)安装最新发布版本:
$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get install ansible

ssh-keygen -t rsa
主控机上执行。在/root/.ssh/下生成了id_rsa.pub,复制里面的内容,粘贴到被控制机器的/root/.ssh/authorized_keys里面并执行ssh-agent bash。

ansible_ssh_host

  将要连接的远程主机名.与你想要设定的主机的别名不同的话,可通过此变量设置.

ansible_ssh_port

  ssh端口号.如果不是默认的端口号,通过此变量设置.

ansible_ssh_user

  默认的 ssh 用户名

ansible_ssh_pass

  ssh 密码(这种方式并不安全,我们强烈建议使用 --ask-pass 或 SSH 密钥)

ansible_sudo_pass

  sudo 密码(这种方式并不安全,我们强烈建议使用 --ask-sudo-pass)

ansible_sudo_exe (new in version 1.8)

  sudo 命令路径(适用于1.8及以上版本)

ansible_connection

  与主机的连接类型.比如:local, ssh 或者 paramiko. Ansible 1.2 以前默认使用 paramiko.1.2 以后默认使用 'smart','smart' 方式会根据是否支持 ControlPersist, 来判断'ssh' 方式是否可行.

ansible_ssh_private_key_file

  ssh 使用的私钥文件.适用于有多个密钥,而你不想使用 SSH 代理的情况.

ansible_shell_type

  目标系统的shell类型.默认情况下,命令的执行使用 'sh' 语法,可设置为 'csh' 或 'fish'.

ansible_python_interpreter

  目标主机的 Python 路径.适用于的情况: 系统中有多个 Python, 或者命令路径不是"/usr/bin/python",比如  \*BSD, 或者 /usr/bin/python
  不是 2.X 版本的 Python.我们不使用 "/usr/bin/env" 机制,因为这要求远程用户的路径设置正确,且要求 "python" 可执行程序名不可为 python以外的名字(实际有可能名为python26).

  与 ansible_python_interpreter 的工作方式相同,可设定如 ruby 或 perl 的路径....
  
  
  

pattern:Http://www.ansible.com.cn/doc...
ansible <pattern_Goes_here> -m <module_name> -a <arguments>
示例如下:

ansible webservers -m service -a "name=httpd state=restarted"

--ask-pass -k :带该参数,需要密码登陆

1、Ad Hoc commands
ansible atlanta -a "/sbin/reboot" -f 10
ansible raleigh -m shell -a 'echo $TERM'

ansible atlanta -m copy -a "src=/etc/hosts dest=/tmp/hosts"
$ ansible webservers -m file -a "dest=/srv/foo/a.txt mode=600" //赋值权限
$ ansible webservers -m file -a "dest=/srv/foo/b.txt mode=600 owner=mdehaan group=mdehaan" //赋值权限、更改用户组
ansible all -m file -a "dest=/usr/yangshu/ss mode=755 owner=root group=root state=directory" //创建文件夹ss
ansible webservers -m file -a "dest=/path/to/c state=absent"//删除目录
ansible all -m yum -a "name=acme state=present" //确认一个软件包已经安装,但不去升级它:

确认一个软件包的安装版本:

$ ansible webservers -m yum -a "name=acme-1.5 state=present"
确认一个软件包还没有安装:

$ ansible webservers -m yum -a "name=acme state=absent"
ansible all -m git -a "repo=git://GitHub.com/NeverMoreForD/picMonitor.git dest=/usr/yangshu2 version=HEAD" //直接通过git 源码部署

确认某个服务在所有的webservers上都已经启动:
$ ansible webservers -m service -a "name=httpd state=started"
或是在所有的webservers上重启某个服务(译者注:可能是确认已重启的状态?):
$ ansible webservers -m service -a "name=httpd state=restarted"
确认某个服务已经停止:
$ ansible webservers -m service -a "name=httpd state=stopped"

Time Limited Background Operations
需要长时间运行的命令可以放到后台去,在命令开始运行后我们也可以检查运行的状态.如果运行命令后,不想获取返回的信息, 可执行如下命令:

$ ansible all -B 3600 -P 0 -a "/usr/bin/long_running_operation --do-stuff"
如果你确定要在命令运行后检查运行的状态,可以使用 async_status 模块.前面执行后台命令后会返回一个 job id, 将这个 id 传给 async_status 模块:

$ ansible web1.example.com -m async_status -a "jid=488359678239.2844"
获取状态的命令如下:

$ ansible all -B 1800 -P 60 -a "/usr/bin/long_running_operation --do-stuff"
其中 -B 1800 表示最多运行30分钟, -P 60 表示每隔60秒获取一次状态信息.

Polling 获取状态信息的操作会在后台工作任务启动之后开始.若你希望所有的工作任务快速启动, --forks 这个选项的值 要设置得足够大,这是前面讲过的并发进程的个数.在运行指定的时间(由-B选项所指定)后,远程节点上的任务进程便会被终止.

一般你只能在把需要长时间运行的命令或是软件升级这样的任务放到后台去执行.对于 copy 模块来说,即使按照前面的示例想放到 后台执行文件传输,实际上并不会如你所愿.

在执行一个 playbook 之前,想看看这个 playbook 的执行会影响到哪些 hosts,你可以这样做: ansible-playbook playbook.yml --list-hosts

2、Ansible playbook
host、vars、tasks、handlers、remote_user
包含tasks:

tasks:

  • include: Wordpress.yml wp_user=timmy
  • include: wordpress.yml wp_user=alice
  • include: wordpress.yml wp_user=bob

tasks:

  • { include: wordpress.yml, wp_user: timmy, ssh_keys: [ 'keys/one.txt', 'keys/two.txt' ] }
    那么在 wordpress.yml里面,tasks用变量为:{{ wp_user }}

svn checkout 代码:/usr/bin/svn --non-interactive --trust-server-cert --no-auth-cache --username yangshu --password 'yangshu' export --force -r HEAD https://192.168.0.115/svn/zhu... /var/www/kukuapp
"msg": "svn: E000022: Can't convert string from 'UTF-8' to native encoding:n :
问题解决,加上如下代码:environment:

- LC_ALL: en_US.UTF-8

linux环境下如何快速升级你的node.js
npm install -g n
n -V
n stable 或者 到指定版本: n v6.0.0
①ln -s /var/lib/nodev8/bin/node /usr/bin/
②ln -s /var/lib/nodev8/bin/npm /usr/bin/
ansible-playbook webenv.yml --ask-pass
fatal: [192.168.0.129]: FaiLED! => {"changed": false, "failed": true, "module_stderr": "Shared connection to 192.168.0.129 closed.rn", "module_stdout": "/bin/sh: 1: /usr/bin/python: not foundrn", "msg": "MODULE FAILURE", "rc": 0}
解决:ln -s /usr/bin/python3 /usr/bin/python

新装的机器:189的这份ubuntu.source.list拿来覆盖掉原来的。在apt update

dpkg --configure -a


最近在debian系统上apt-get install -y ia32-libs安装软件到最后时总是出现如下错误:
Sub-process /usr/bin/dpkg returned an error code (1)

1解决办法:
cd /var/lib/dpkg
sudo mv info info.bak
sudo mkdir info
sudo apt-get install -y ia32-libs
开始我是想在一条命令中同时安装几个软件包,
结果还是出现E: Sub-process /usr/bin/dpkg returned an error code (1) 。
于是把新的info删掉,一个个地来安装,每装好一个软件包,就把info删掉,再新建一个,这样就没有提示E: Sub-process /usr/bin/dpkg returned an error code (1) 了。
最后用原来的info.bak 替换新的info

sudo mv info.bak info
sudo apt-get update
sudo apt-get upgrade
sudo apt-get autoremove
执行完以上操作,再安装软件的时候都不再有E: Sub-process /usr/bin/dpkg returned an error code (1)了。

2\
cd /var/lib/dpkg
sudo mv info{,.bak}
sudo mkdir info
sudo dpkg --configure -a
sudo apt-get install -f

3\
sudo fc-cache -fv 2>&1 | grep failed | cut -f1 -d":" | xargs -i sudo touch {} && sudo fc-cache -fv

E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
ps -ef | grep apt-get命令找到相关进程 然后使用Kill -9 进程号



Aug 03 02:49:52 ubuntu apache2[33684]: AH00526: Syntax error on line 14 of /etc/apache2/sites-enabled/kukuapi1.conf:
Aug 03 02:49:52 ubuntu apache2[33684]: Invalid command 'XSendFile', perhaps misspelled or defined by a module not included in the server configuration

--Download

mod_xsendfile.c
SHA256: 8e8c21ef39bbe86464d3831fd30cc4c51633f6e2e002204509e55fc7c8df9cf9
Source tarball (gz): mod_xsendfile-0.12.tar.gz
SHA256: 9078ec28697d672a7f8aa3a19180109c1ccf73Dc6aa335e856d1129344566b7e
Source tarball (bz2): mod_xsendfile-0.12.tar.bz2
SHA256: 6184d3f7535b34f08ea4e665b55498d5f76673d2a816cf2ee3eaae203c2d780b
Win32 binaries: mod_xsendfile-0.12.zip
SHA256: 75e6a8af00112a7262880e5e6823d02f14b6e84fed8305fa0351a428d1c1529e
GitHub repository: http://github.com/nmaier/mod_...
Beta version: version 1.0 beta1
Installation

步骤:
Grab the source.
Compile and install
apxs -cia mod_xsendfile.c
---apxs -cia mod_xsendfile.c 依赖 apache2-dev ,安装apache2-dev要用ali的源.
Restart apache
That's all.


/etc/nginx/sites-available
default
/etc/nginx/sites-enabled
default1.config

/etc/apache2/sites-available
default-ssl.conf
/etc/apache2/sites-enabled
kukuapi1.conf


nginx 的时候出现["E: Sub-process /usr/bin/dpkg returned an error code (1)"], 屏蔽掉其他已安装的yml模块和即将安装的yml模块.单独安装nginx的yml
cd /var/lib/dpkg
sudo mv info info.bak
sudo mkdir info
sudo apt-get update
sudo apt-get upgrade
sudo apt-get autoremove


mysql安装的时候:
apt-get -f install


svn
E230001: Server SSL certificate verification failed: certificate issued for a different hostname, issuer is not trusted",

第一次拷贝的时候,要输入账户和密码:
svn co https://192.168.0.115/svn/zhu...
提示:选p,然后输入账号密码.以后不用输入了.

拷贝kukuannex:
scp -r root@192.168.0.122:/var/www/kukuannex /var/www/

拷贝pc模板:
cd /var/www/kukuapp/public
scp -r root@192.168.0.122:/var/www/kukuapp/public/pc ./





先用阿里的源 安装mysql
sudo passwd root 设置root密码
su root 切换到root下面.
1、先换阿里的源scp root@192.168.0.189:/etc/ansible/packages/ali.sources.list /etc/apt

cp ali.sources.list sources.list
apt update
apt list --upgradable

2 安装vim / openssh-server
2、ln -s /usr/bin/python3 /usr/bin/python
3、vim /etc/ssh/sshd_config 设置root 可以登录 关闭防火墙:ufw disable

", " mysql-commUnity-server depends on perl; however:", " Package perl is not installed.", "", "dp
mysql 在第一次安装的时候报错时,执行这个:apt-get -f install

拷贝kukuannex:
scp -r root@192.168.0.122:/var/www/kukuannex /var/www/

拷贝pc模板:
cd /var/www/kukuapp/public
scp -r root@192.168.0.122:/var/www/kukuapp/public/pc ./

第一次play后台代码的时候,要输入账户和密码:
svn co https://192.168.0.115/svn/zhu...
提示:选p,然后输入账号密码.以后不用输入了.

cd /root/.ssh/
vim authorized_keys

--结束END--

本文标题: 【ansible 自动化部署方案】

本文链接: https://www.lsjlt.com/news/193079.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【ansible 自动化部署方案】
    更新下122(189)的前端?----front_end.yml更新下122(189)的后端?----back_end.yml一键装机。----webenv.yml ssh apache2(源:ubuntu) mysql5.6 ngin...
    99+
    2023-01-31
    方案 ansible
  • linux系统Ansible自动化运维部署方法
    ansible是新出现的 自动化 运维工具 , 基于python研发 。 整合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批量运行命令等功能,下面就看...
    99+
    2022-06-04
    linux Ansible 自动化
  • Linux中如何部署自动化运维工具ansible
    小编给大家分享一下Linux中如何部署自动化运维工具ansible,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!ansible是新出现的自动化运维工具,基于Pyt...
    99+
    2023-06-27
  • Node 自动化部署的方法
    当我们在更新迭代 Node 项目的时候,我们需要做以下几步: git push 将代码提交至代码仓库 在服务器中执行 git pull 拉取最新代码 pm2 start 运行你的代码 这样做...
    99+
    2022-06-04
    方法 Node
  • Mysql5.6 自动化部署
    主机环境:Centos6.5前提: 配置yum源 移除系统自带的mysql 删除原先的mysql用户 使用mysql二进制安装包:https://dev.mysql.com/downloads/file/id=473278[root@mys...
    99+
    2023-06-06
  • Python自动化部署
    # -*- coding: utf-8 -*-#!/bin/env python'''#Auth: karl#Function: released version#Date:2017/6/27#Version:V1.0'''import  ...
    99+
    2023-01-31
    Python
  • Ansible部署K8s集群的方法
    目录检查网络:k8s-check.yaml检查k8s各主机的网络是否可达;检查k8s各主机操作系统版本是否达到要求;配置k8s集群dns解析: k8s-hosts-cfg.yaml配...
    99+
    2022-11-13
  • App自动化部署:uiautomator2
    快速安装库: pip3 install 库名 -i Simple Index --trusted-host pypi.douban.com 一、appium 与uiautomator2 对比 appium缺点: appium运行慢、时间长...
    99+
    2023-09-05
    自动化 android python
  • Maven+Tomcat8 实现自动化部署的方法
    本文介绍了Maven+Tomcat8 实现自动化部署的方法,分享给大家,具体如下:1.配置tomcat-users.xml首先在Tomcat里配置deploy的用户(tomcat根目录/conf/tomcat-users.xml):<...
    99+
    2023-05-31
    maven tomcat8 自动部署
  • 钉钉私有化部署方案
    在私有化部署的情况下,钉钉应用将不再是一台单纯的服务器,而是作为一个独立的计算机存在,用户的数据将被存储在云端。这将极大地提高用户数据的安全性和隐私性。同时,私有化部署还能保障用户的控制权,使得应用的更新和维护可以更加自由,不受公司的控制。...
    99+
    2023-10-28
    方案
  • 钉钉本地化部署方案
    钉钉本地化部署方案是为了更好地适应中国市场的需求,并满足不同企业的特殊需求。从最基础的小程序开发到企业微信,钉钉一直致力于将最好的产品和服务提供给用户。在本文中,我们将介绍钉钉本地化部署方案,包括小程序和企业微信。 小程序: 钉钉在本地化...
    99+
    2023-10-28
    方案
  • Ansible自动化运维工具
    文章目录 一.Ansible自动化运维工具介绍1.Ansible简介2.Ansible特点及优势(1)特点(2)优点 3.Ansible核心程序4.Ansible工作原理及流程 二.部署Ansible自动化运维工具1.管理...
    99+
    2023-08-30
    运维 ansible 自动化
  • python 自动化部署工具-fabri
    今天闲来无事,来介绍一下利用fabric 来部署代码包。 安装 pip install fabric fabric 默认引用fafile.py,指定执行文件加参数-f,如:fab -H 127.0.0.1 -f fabtest.py te...
    99+
    2023-01-31
    工具 python fabri
  • Jenkins+Docker+Gitee+SpringBoot自动化部署
    目录1, 搭建Jenkins平台2, Jenkins平台配置3,创建SpringBoot应用4,Gitee配置5, 新建自动化部署任务6,打包测试当我们使用传统的开发方式开发后台系统...
    99+
    2022-11-13
  • python 自动化部署工具Fabric
    自动化部署工具Fabric简介    Fabric就是一个帮助我们在上线时减少重复/繁琐操作的自动化部署利器,对于缺乏成熟运维平台的众多小公司的运维或开发人员来说,掌握这个工具是有必要的。1. Fabric是什么Fabric官方文档的描述如...
    99+
    2023-01-31
    工具 python Fabric
  • php项目自动化部署 —— Jenkins
    一 、确认本地安装好了Java的JDK 地址:Java Downloads | Oracle 因为我是在本地安装jenkins,这里用到的是java11-windows 安装JDK,并配置环境变量,csdn教程有很多 二、jinkins安装...
    99+
    2023-09-25
    jenkins 自动化 java git php
  • Java对接ansible自动运维化平台方式
    目录Java对接ansible自动运维化平台实现文件采集分发场景说明及ansible yum安装Java代码实现文件分发POI创建文件工具类创建主机组配置文件实现文件分发文件采集总结...
    99+
    2023-05-14
    Java对接ansible 自动运维化平台 Java ansible
  • Springboot服务Docker化自动部署的实现方法
    还在手动将springboot项目打包,然后上传服务器,手动执行启动命令将项目启动吗?你out了!通过Docker配置DockerMaven插件,快速部署,一键将springboot...
    99+
    2022-11-11
  • Jenkins自动化部署Vue项目的方法实现
    目录jenkins介绍1. 环境准备2. 首先登录服务器更新系统软件3. 安装Java和git4. 安装nginx5. 安装Jenkins6. 用jenkins创建一个构建任务7. ...
    99+
    2022-11-13
  • Gogs+Jenkins+Docker 自动化部署.NetCore的方法步骤
    目录环境说明Docker安装Gogs安装Docker中托管.NetCore服务Jenkins安装使用Jenkins自动化总结环境说明 腾讯云轻量服务器, 配置 1c 2g ...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作