如何在django中使用ansible-playbook命令执行yaml 文件

发布网友 发布时间:2022-04-25 19:32

我来回答

1个回答

热心网友 时间:2022-04-11 02:42

  一、安装
  1、安装第三方epel源
  centos 5的epel
  rpm -ivh http://mirrors.sohu.com/fedora-epel/5/x86_/epel-release-5-4.noarch.rpm
rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_/epel-release-6-8.noarch.rpm
17:01:30 # cat /etc/issue
CentOS release 6.5 (Final)
Kernel \r on an \m

  由于是6版本所以安装6的epel
  yum install ansible

  如果需要自定义mole或者想阅读源码、使用最新版本,可以去github里下载源码
  git clone https://github.com/ansible/ansible.git
17:22:08 # cd /etc/ansible/
root@ip-10-10-10-10:/etc/ansible
17:23:27 # ll
total 12
-rw-r--r-- 1 root root 5113 Dec 29 03:00 ansible.cfg
-rw-r--r-- 1 root root 965 Dec 29 03:00 hosts
其中ansible.cfg是配置文件,hosts是管理主机信息
17:24:44 # cat hosts
172.17.0.2:49154
172.17.0.4:49155
[zabbix]
172.17.0.2:49154
172.17.0.4:49155
[*]
172.17.0.10
16:20:57 # ansible 127* -m ping
SSH password:
127.0.0.1 | success >> {
"changed": false,
"ping": "pong"
}

root@ip-10-10-10-10:/etc/ansible
16:21:05 # ansible 172* -m ping
SSH password:
172.17.0.5 | success >> {
"changed": false,
"ping": "pong"
}

172.17.0.4 | success >> {
"changed": false,
"ping": "pong"
}

172.17.0.2 | success >> {
"changed": false,
"ping": "pong"
}

  如果你有多台服务器的话,想并发运行,可以使用-f参数,默认是并发5
  11:30:35 # ansible * -m shell -a "echo $TERM" -u test --private-key=denglei -K
SSH password:
sudo password [defaults to SSH password]:
172.17.0.10 | success | rc=0 >>
xterm
11:30:44 # ansible * -m copy -a "src=/tmp/server dest=/tmp/server" -u test --private-key=denglei -K
SSH password:
sudo password [defaults to SSH password]:
172.17.0.10 | success >> {
"changed": true,
"dest": "/tmp/server",
"gid": 505,
"group": "test",
"md5sum": "e8b32bc4d7b5ac6075a1418ad8841e",
"mode": "06",
"owner": "test",
"size": 7,
"src": "/home/test/.ansible/tmp/ansible-1402630447.45-253524136818424/source",
"state": "file",
"uid": 503
}

  去客户端查看文件是否传输过来
  11:34:57 # ansible * -m shell -a "ls -l /tmp/" -u test --private-key=denglei -K
SSH password:
sudo password [defaults to SSH password]:
172.17.0.10 | success | rc=0 >>
total 76
-rw-r--r-- 1 root root 41692 May 21 13:02 config
-rw-r--r-- 1 root root 1228 Jun 12 18:24 install_pptpd_*.sh
-rw-rw-r-- 1 test test 7 Jun 13 19:33 server
-rw-r--r-- 1 root root 82 Jun 12 18:21 test.log
-rw-r--r-- 1 root root 290 Jun 12 18:21 test.sh
-rw-r--r-- 1 root root 2444 Apr 28 2012 *_centos6.sh
-rw------- 1 root root 727 Jun 10 18:21 yum_save_tx-2014-06-10-18-21UrqDAp.yumtx
-rw-rw-r-- 1 zabbix zabbix 3124 Jun 12 21:32 zabbix_agentd.log
-rw-rw-r-- 1 zabbix zabbix 5 Jun 12 21:32 zabbix_agentd.pid
11:35:09 # ansible * -m shell -a "cat /tmp/server" -u test --private-key=denglei -K
SSH password:
sudo password [defaults to SSH password]:
172.17.0.10 | success | rc=0 >>
server

  还有另外一个模块file,可以修改用户与权限
  13:50:07 # ansible * -m shell -a "ls -l /tmp/server" -u test --private-key=denglei -K
SSH password:
sudo password [defaults to SSH password]:
172.17.0.10 | success | rc=0 >>
-rw-rw-r-- 1 test test 7 Jun 13 19:33 /tmp/server

  server文件是6权限,用户与组都是test
  13:51:17 # ansible * -m file -a "dest=/tmp/server mode=755 owner=root group=root" -u test --private-key=denglei -K
SSH password:
sudo password [defaults to SSH password]:
172.17.0.10 | success >> {
"changed": true,
"gid": 0,
"group": "root",
"mode": "0755",
"owner": "root",
"path": "/tmp/server",
"size": 7,
"state": "file",
"uid": 0
}

root@ip-10-10-10-10:/etc/ansible
13:51:31 # ansible * -m shell -a "ls -l /tmp/server" -u test --private-key=denglei -K
SSH password:
sudo password [defaults to SSH password]:
172.17.0.10 | success | rc=0 >>
-rwxr-xr-x 1 root root 7 Jun 13 19:33 /tmp/server
14:20:30 # ansible * -m yum -a "name=nmap state=installed" -u test --private-key=denglei -K
SSH password:
sudo password [defaults to SSH password]:
172.17.0.10 | success >> {
"changed": true,
"msg": "",
"rc": 0,
"results": [
"Loaded plugins: fastestmirror, security\nLoading mirror speeds from cached hostfile\n * epel: mirrors.hust.e.cn\nSetting up Install Process\nResolving Dependencies\n--> Running transaction check\n---> Package nmap.x86_ 2:5.51-3.el6 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n PackageArch Version Repository Size\n================================================================================\nInstalling:\n nmap x86_ 2:5.51-3.el6 Base 2.7 M\n\nTransaction Summary\n================================================================================\nInstall 1 Package(s)\n\nTotal download size: 2.7 M\nInstalled size: 9.7 M\nDownloading Packages:\nRunning rpm_check_debug\nRunning Transaction Test\nTransaction Test Succeeded\nRunning Transaction\n\r Installing : 2:nmap-5.51-3.el6.x86_ 1/1 \n\r Verifying : 2:nmap-5.51-3.el6.x86_ 1/1 \n\nInstalled:\n nmap.x86_ 2:5.51-3.el6 \n\nComplete!\n"
]
}

  三、playbook配置管理
  A.进行一下shell模块操作,测试删除文件
  先查看一下客户端的server-test是否存在
  [root@puppet ansible]# ansible * -m shell -a "ls -l /tmp/server-test" -u test --private-key=/root/denglei -k
SSH password:
172.17.0.10 | success | rc=0 >>
-rw-rw-r-- 1 test test 7 Jun 14 00:37 /tmp/server-test

  然后写一个删除的playbook
  [root@puppet ansible]# cat test.yml
---
- hosts: *
remote_user: test
tasks:
- name: delete /tmp/server-test
shell: rm -rf /tmp/server-test
[root@puppet ansible]# ansible-playbook test.yml --private-key=/root/denglei -k
[WARNING]: The version of gmp you have installed has a known issue regarding
timing vulnerabilities when used with pycrypto. If possible, you should update
it (ie. yum update gmp).

SSH password:

PLAY [*] ********************************************************************

GATHERING FACTS ***************************************************************
ok: [172.17.0.10]

TASK: [delete /tmp/server-test] ***********************************************
changed: [172.17.0.10]

PLAY RECAP ********************************************************************
172.17.0.10 : ok=2 changed=1 unreachable=0 failed=0
[root@puppet ansible]# ansible * -m shell -a "ls -l /tmp/server-test" -u test --private-key=/root/denglei -k
SSH password:
172.17.0.10 | FAILED | rc=2 >>
ls: cannot access /tmp/server-test: No such file or directory

  B.进行一下template模块操作,测试文件传输
  [root@puppet ansible]# cat copy.yml
---
- hosts: *
remote_user: test
tasks:
- name: copy local server to client /tmp/server-test
template: src=/tmp/server dest=/tmp/server-test
[root@puppet ansible]# ansible-playbook copy.yml --private-key=/root/denglei -k
[WARNING]: The version of gmp you have installed has a known issue regarding
timing vulnerabilities when used with pycrypto. If possible, you should update
it (ie. yum update gmp).

SSH password:

PLAY [*] ********************************************************************

GATHERING FACTS ***************************************************************
ok: [172.17.0.10]

TASK: [copy local server to client /tmp/server-test] **************************
changed: [172.17.0.10]

PLAY RECAP ********************************************************************
172.17.0.10 : ok=2 changed=1 unreachable=0 failed=0

[root@puppet ansible]# ansible * -m shell -a "ls -l /tmp/server-test" -u test --private-key=/root/denglei -k
SSH password:
172.17.0.10 | success | rc=0 >>
-rw-rw-r-- 1 test test 7 Jun 14 17:07 /tmp/server-test

  C.使用service模块,测试一下服务重启

ansible如何与django结合(2023年最新整理) django怎么在服务器执行命令(将django部署到linux服务器) 怎么在django打开别的文件? Django实现crontab远程任务管理系统 django开源库有哪些(django项目源代码) 如何用saltstack安装django(2023年最新分享) django是哪里? 哪里能够买到商用的django项目源码(2023年最新整理) 黑马程序员Linux运维培训怎么样? 可以运行多少个python脚本? ansibleplaybook ansible执行shell ansible command ansible的limit的用法 ansible shell ansible notify ansible service playbook安装redis ansible yml
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com