{"id":1252,"date":"2022-02-16T04:44:00","date_gmt":"2022-02-16T04:44:00","guid":{"rendered":"https:\/\/tungle.ca\/?p=1252"},"modified":"2022-12-04T18:51:21","modified_gmt":"2022-12-05T02:51:21","slug":"install-wordpress-via-ansible","status":"publish","type":"post","link":"https:\/\/tungle.ca\/?p=1252","title":{"rendered":"Using Ansible to install WordPress"},"content":{"rendered":"\n<p>This is one of the interesting labs that I have done in the program. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"396\" height=\"267\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-24.png\" alt=\"\" class=\"wp-image-1260\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-24.png 396w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-24-300x202.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-24-200x135.png 200w\" sizes=\"auto, (max-width: 396px) 100vw, 396px\" \/><\/figure>\n\n\n\n<p>Below are a couple of steps to automatically deploy WordPress via Ansible.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"yaml\" class=\"language-yaml\"># \/etc\/ansible\/hosts\n[tunglamp]\nhost1 ansible_ssh_host=192.168.5.27\n\n# Create a group_vars (\/etc\/ansible) and tunglamp file under this directory.\nansible_ssh_user: root\n\n# Create a files (\/etc\/ansible) directory and index.html.j2 file.\n&lt;html&gt;\n&lt;head&gt;\n\t&lt;title&gt;{{ firstname}} - {{ lastname }}&lt;\/title&gt; \n&lt;\/head&gt;\n&lt;body&gt;\n\t&lt;h1&gt;{{ firstname }} - {{ lastname }}&lt;\/h1&gt; \n\t&lt;h3&gt;Welcome to Tung's Ansbile Test Page&lt;\/h3&gt;\n\t&lt;img src=\"http:\/\/xyz.ca\/wp-content\/uploads\/2015\/08\/BCIT-demands-LNG-lobby-drop-its-name-from-partner-list.gif\"&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n\n# Create a tungwordpress.yml file.\n---\n- hosts: tunglamp\n  become: root\n  gather_facts: false\n# we can put variables here too that work in addition to what is in group_vars\n  ignore_errors: yes\n  vars:\n    firstname: \"ABC\"\n    lastname: \"XYZ\"\n    #auser: hellothere\n    ansible_ssh_user: root\n    wpdbname: tungdbname\n    wpdbuser: tungdbuser\n    wpdbpass: tungdbpass\n    wpdbhost: localhost\n    wppath: \"\/var\/www\/html\"\n\n  tasks:\n    - name: Install apache2\n      apt: name=apache2 state=latest\n\n    - name: Install MySQL (really MariaDB now)\n      apt: name=mariadb-server state=latest\n\n    - name: Install MySQL python module \n      apt: name=python-mysqldb state=latest\n\n    - name: Install php\n      apt: name=php state=latest\n    - name: \"Install php-cli\"\n      apt: name=php-cli state=latest\n#    - name: \"Install php-mcrypt\"\n#      apt: name=php-mcrypt state=latest\n    - name: \"Install php-gd\"\n      apt: name=php-gd state=latest\n    - name: Install php-fpm\n      apt: name=php-fpm state=latest\n    - name: Install php-common\n      apt: name=php-common state=latest\n    - name: Install php-mbstring\n      apt: name=php-mbstring state=latest\n    - name: Install php-xmlrpc\n      apt: name=php-xmlrpc state=latest\n    - name: Install php-xml\n      apt: name=php-xml state=latest\n    - name: Install php zip\n      apt: name=php-zip state=latest\n    - name: Install php-curl\n      apt: name=php-curl state=latest\n    \n    - name: Install apache2 php module\n      apt: name=libapache2-mod-php state=latest\n\n    - name: Install php-mysql\n\n## your php installation appears to be missing the mysql extension if we have used ## apt: name=php-mysql state=latest\n      apt: name=php7.3-mysql state=latest\n\n\n#MySQL config\n    - name: Create MySQL Database\n      mysql_db:\n        name: \"{{wpdbname}}\"\n#     ignore_errors: yes\n\n    - name: Create DB user\/pass and give the user all privileges\n      mysql_user:\n        name: \"{{wpdbuser}}\"\n        password: \"{{wpdbpass}}\"\n        priv: '{{wpdbname}}.*:ALL'\n        state: present\n#     ignore_errors: yes\n\n    - name: Copy index test page\n      template:\n        src: \"files\/index.html.j2\"\n        dest: \"\/var\/www\/html\/index.html\"\n\n    - name: enable Apache2 service\n      service: name=apache2 enabled=yes\n\n#Wordpress stuff\n    - name: Download and tar -zxvf wordpress\n      unarchive:\n        src: https:\/\/wordpress.org\/latest.tar.gz\n        remote_src: yes\n        dest: \"{{ wppath }}\"\n        extra_opts: [--strip-components=1]\n       #creates: \"{{ wppath }}\"\n\n    - name: Set permissions\n      file:\n        path: \"{{wppath}}\"\n        state: directory\n        recurse: yes\n        owner: www-data\n        group: www-data\n \n    - name: copy the config file wp-config-sample.php to wp-config.php so we can edit it\n      command: mv {{wppath}}\/wp-config-sample.php {{wppath}}\/wp-config.php \n      #creates={{wppath}}\/wp-config.php\n      become: yes\n \n    - name: Update WordPress config file\n      lineinfile:\n        path: \"{{wppath}}\/wp-config.php\"\n        regexp: \"{{item.regexp}}\"\n        line: \"{{item.line}}\"\n      with_items:\n        - {'regexp': \"define\\\\( 'DB_NAME', '(.)+' \\\\);\", 'line': \"define( 'DB_NAME', '{{wpdbname}}' );\"}\n        - {'regexp': \"define\\\\( 'DB_USER', '(.)+' \\\\);\", 'line': \"define( 'DB_USER', '{{wpdbuser}}' );\"}\n        - {'regexp': \"define\\\\( 'DB_PASSWORD', '(.)+' \\\\);\", 'line': \"define( 'DB_PASSWORD', '{{wpdbpass}}' );\"}\n     \n\n  handlers:\n    - name: restart apache2 \n      service: name=apache2 state=restarted\n    - name: enable Apache2 service\n      service: name=apache2 enabled=yes\n    - name: Apache Module - mod_rewrite\n      apache2_module:\n        state: present\n        name: rewrite\n  \n    - name: Copy index test page\n      template:\n        src: \"files\/index.html.j2\"\n        dest: \"\/var\/www\/html\/index.html\"  <\/code><\/pre>\n\n\n\n<p>The Debian server is running 192.168.5.27. <\/p>\n\n\n\n<p>Make sure we can access SSH on the Debian server via public key authentication.  <\/p>\n\n\n\n<p>Run ansible-playbook<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">#\/etc\/ansible\nansible-playbook -i \/etc\/ansible\/hosts tungwordpress.yml -u root<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"1007\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-18.png\" alt=\"\" class=\"wp-image-1253\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-18.png 975w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-18-290x300.png 290w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-18-768x793.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-18-194x200.png 194w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"914\" height=\"1024\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-19-914x1024.png\" alt=\"\" class=\"wp-image-1254\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-19-914x1024.png 914w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-19-268x300.png 268w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-19-768x860.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-19-179x200.png 179w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-19.png 975w\" sizes=\"auto, (max-width: 914px) 100vw, 914px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"914\" height=\"1024\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-20-914x1024.png\" alt=\"\" class=\"wp-image-1255\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-20-914x1024.png 914w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-20-268x300.png 268w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-20-768x860.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-20-179x200.png 179w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-20.png 975w\" sizes=\"auto, (max-width: 914px) 100vw, 914px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"907\" height=\"1024\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-21-907x1024.png\" alt=\"\" class=\"wp-image-1256\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-21-907x1024.png 907w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-21-266x300.png 266w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-21-768x867.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-21-177x200.png 177w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-21.png 975w\" sizes=\"auto, (max-width: 907px) 100vw, 907px\" \/><\/figure>\n\n\n\n<p>WordPress has been installed automatically via Ansible.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"917\" height=\"1024\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-22-917x1024.png\" alt=\"\" class=\"wp-image-1257\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-22-917x1024.png 917w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-22-269x300.png 269w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-22-768x858.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-22-179x200.png 179w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-22.png 975w\" sizes=\"auto, (max-width: 917px) 100vw, 917px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"908\" height=\"1024\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-23-908x1024.png\" alt=\"\" class=\"wp-image-1258\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-23-908x1024.png 908w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-23-266x300.png 266w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-23-768x866.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-23-177x200.png 177w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/02\/image-23.png 975w\" sizes=\"auto, (max-width: 908px) 100vw, 908px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>This is one of the interesting labs that I have done in the program. Below are a couple of steps to automatically deploy WordPress via Ansible. The Debian server is running 192.168.5.27. Make sure we can access SSH on the Debian server via public key authentication. Run ansible-playbook WordPress has been installed automatically via Ansible.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,6],"tags":[16],"class_list":["post-1252","post","type-post","status-publish","format-standard","hentry","category-ansible","category-linux","tag-ansible"],"_links":{"self":[{"href":"https:\/\/tungle.ca\/index.php?rest_route=\/wp\/v2\/posts\/1252","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tungle.ca\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tungle.ca\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tungle.ca\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tungle.ca\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1252"}],"version-history":[{"count":5,"href":"https:\/\/tungle.ca\/index.php?rest_route=\/wp\/v2\/posts\/1252\/revisions"}],"predecessor-version":[{"id":4420,"href":"https:\/\/tungle.ca\/index.php?rest_route=\/wp\/v2\/posts\/1252\/revisions\/4420"}],"wp:attachment":[{"href":"https:\/\/tungle.ca\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1252"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tungle.ca\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1252"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tungle.ca\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1252"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}