一看必会系列:ansible 部署lamp
————目录规划
[root@ansible_master roles]# tree
.
├── apache
│ ├── tasks
│ │ └── main.yaml
│ └── templates
│ └── index.php
├── lamp.yaml
├── mysql
│ └── tasks
│ ├── main.yaml
│ └── main.yaml~
————mysql/main.yaml
[root@ansible_master roles]# cat mysql/tasks/main.yaml
– name: install MySQL-python
yum: name=MySQL-python state=installed
– name: install mariadb-server
yum: name={{ item }} state=installed
with_items:
– mariadb-server
notify:
– restart mysql
– name: Start mariadb
service: name=mariadb state=restarted enabled=yes
#增加用户方式1
– name: user
mysql_user: name=xx password=12345 priv=*.*:ALL state=present
– name: Create db
mysql_db:
login_host: "127.0.0.1"
login_user: "root"
login_password: ""
login_port: "3306"
name: "cisco_db"
encoding: "utf8"
state: "present"
#增加用户方式2
– name: create a user
mysql_user:
login_host: "127.0.0.1"
login_user: "root"
login_password: ""
login_port: "3306"
name: "cisco"
password: "1234"
host: "192.168.142.%"
priv: "*.*:all"
state: "present"
#collation,config_file,connect_timeout,encoding,login_host,login_password,login_port,login_unix_socket,login_user,name,quick,single_transaction,ssl_ca,ssl_cert,ssl_key,state,target
———-apache/main.yaml
[root@ansible_master roles]# cat apache/tasks/main.yaml
– name: remove old version php
yum: name=php* state=absent
– name: remove old version mysql
yum: name=MySQL-server-5.6.35-1.el7.x86_64 state=absent
– name: install apache and php
yum: name={{ item }} state=present
with_items:
– httpd
– php
– php-mysql
– name: copy index.php.j2
template: src=index.php dest=/var/www/html/index.php
– name: http service state
service: name=httpd state=restarted
– name: http service enable
shell: systemctl enable httpd
[root@ansible_master roles]#
———lamp.yaml
[root@ansible_master roles]# cat lamp.yaml
– name: hosts
hosts: all
remote_user: root
– name: install omysql
hosts: mysql
roles:
– mysql
– name: install apache and php
hosts: apache
roles:
– apache
———-验证–
[root@ansible_master roles]# ansible apache -m shell -a "curl localhost/index.php |grep ansible"
[WARNING]: Consider using get_url or uri module rather than running curl
192.168.142.103 | SUCCESS | rc=0 >>
<tr><td class="e">System </td><td class="v">Linux ansible_03 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 </td></tr> % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 47382 0 47382 0 0 3157k 0 –:–:– –:–:– –:–:– 3305k
192.168.142.102 | SUCCESS | rc=0 >>
<tr><td class="e">System </td><td class="v">Linux ansible_02 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 </td></tr> % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 47382 0 47382 0 0 3667k 0 –:–:– –:–:– –:–:– 3855k
[root@ansible_master roles]#
———执行结果—
ansible-playbook lamp.yaml
PLAY [hosts] ********************************************************************************************************************
TASK [Gathering Facts] **********************************************************************************************************
ok: [192.168.142.104]
ok: [192.168.142.102]
ok: [192.168.142.103]
PLAY [install omysql] ***********************************************************************************************************
TASK [Gathering Facts] **********************************************************************************************************
ok: [192.168.142.104]
TASK [mysql : install MySQL-python] *********************************************************************************************
ok: [192.168.142.104]
TASK [mysql : install mariadb-server] *******************************************************************************************
ok: [192.168.142.104] => (item=[u’mariadb-server’])
TASK [mysql : Start mariadb] ****************************************************************************************************
changed: [192.168.142.104]
TASK [mysql : user] *************************************************************************************************************
ok: [192.168.142.104]
TASK [mysql : Create db] ********************************************************************************************************
ok: [192.168.142.104]
TASK [mysql : create a user] ****************************************************************************************************
ok: [192.168.142.104]
PLAY [install apache and php] ***************************************************************************************************
TASK [Gathering Facts] **********************************************************************************************************
ok: [192.168.142.102]
ok: [192.168.142.103]
TASK [apache : remove old version php] ******************************************************************************************
changed: [192.168.142.103]
changed: [192.168.142.102]
TASK [apache : remove old version mysql] ****************************************************************************************
ok: [192.168.142.103]
ok: [192.168.142.102]
TASK [apache : install apache and php] ******************************************************************************************
changed: [192.168.142.103] => (item=[u’httpd’, u’php’, u’php-mysql’])
changed: [192.168.142.102] => (item=[u’httpd’, u’php’, u’php-mysql’])
TASK [apache : copy index.php.j2] ***********************************************************************************************
changed: [192.168.142.103]
changed: [192.168.142.102]
TASK [apache : http service state] **********************************************************************************************
changed: [192.168.142.103]
changed: [192.168.142.102]
TASK [apache : http service enable] *********************************************************************************************
changed: [192.168.142.103]
changed: [192.168.142.102]
PLAY RECAP **********************************************************************************************************************
192.168.142.102 : ok=8 changed=5 unreachable=0 failed=0
192.168.142.103 : ok=8 changed=5 unreachable=0 failed=0
192.168.142.104 : ok=8 changed=1 unreachable=0 failed=0
———-之前安装mysql报错
TASK [mysql : user] ***************************************************************************************************************
task path: /etc/ansible/roles/mysql/tasks/main.yaml:11
fatal: [192.168.142.104]: FAILED! => {"changed": false, "msg": "The MySQL-python module is required."}
to retry, use: –limit @/etc/ansible/roles/lamp.retry
解决方法:mysqlserver 需要安装MySQL-python
暂时还木有人评论,坐等沙发!