更新下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
代码语言:javascript复制 将要连接的远程主机名.与你想要设定的主机的别名不同的话,可通过此变量设置.
ansible_ssh_port
代码语言:javascript复制 ssh端口号.如果不是默认的端口号,通过此变量设置.
ansible_ssh_user
代码语言:javascript复制 默认的 ssh 用户名
ansible_ssh_pass
代码语言:javascript复制 ssh 密码(这种方式并不安全,我们强烈建议使用 --ask-pass 或 SSH 密钥)
ansible_sudo_pass
代码语言:javascript复制 sudo 密码(这种方式并不安全,我们强烈建议使用 --ask-sudo-pass)
ansible_sudo_exe (new in version 1.8)
代码语言:javascript复制 sudo 命令路径(适用于1.8及以上版本)
ansible_connection
代码语言:javascript复制 与主机的连接类型.比如:local, ssh 或者 paramiko. Ansible 1.2 以前默认使用 paramiko.1.2 以后默认使用 'smart','smart' 方式会根据是否支持 ControlPersist, 来判断'ssh' 方式是否可行.
ansible_ssh_private_key_file
代码语言:javascript复制 ssh 使用的私钥文件.适用于有多个密钥,而你不想使用 SSH 代理的情况.
ansible_shell_type
代码语言:javascript复制 目标系统的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:
代码语言:javascript复制- 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
代码语言:javascript复制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