はじめに
Ubuntu上のVagrantとAnsibleで遊びまくる週間です。
phpipam
過去何度か取り扱ってますね。これguiでDBのセッティングするからansibleで全部完結させるのは無理だよなーと思いつつ、playbook書く練習もかねて、途中までやってみます。
Vagrant + shellでのインストールメモ。
Vagrantfile
いつも通りです。
Vagrant.configure(2) do |config| config.vm.box = "CentOS72" config.vm.hostname = "phpipam" config.vm.network "private_network", ip: "192.168.100.102" config.vm.provision "shell", inline: <<-SHELL systemctl restart network.service SHELL config.vm.provision "ansible" do |ansible| ansible.playbook = "provisioning/site.yaml" ansible.inventory_path = "provisioning/hosts" ansible.limit = 'all' end end
設定ファイル
my.cnf
デフォルトに対してutf8の行だけ追加。
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mariadb according to the # instructions in http://fedoraproject.org/wiki/Systemd character-set-server = utf8 [mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid # # include all files from the config directory # !includedir /etc/my.cnf.d
php.ini
コメント多くてムカつくと思ったけどそれ除いてもかなりありましたね。Dateの下にタイムゾーン設定を1行追加しました。
[vagrant@phpipam ~]$ grep -v ";" /etc/php.ini | grep -v '^\s*$' [PHP] engine = On short_open_tag = Off asp_tags = Off precision = 14 output_buffering = 4096 zlib.output_compression = Off implicit_flush = Off unserialize_callback_func = serialize_precision = 17 disable_functions = disable_classes = zend.enable_gc = On expose_php = On max_execution_time = 30 max_input_time = 60 memory_limit = 128M error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT display_errors = Off display_startup_errors = Off log_errors = On log_errors_max_len = 1024 ignore_repeated_errors = Off ignore_repeated_source = Off report_memleaks = On track_errors = Off html_errors = On variables_order = "GPCS" request_order = "GP" register_argc_argv = Off auto_globals_jit = On post_max_size = 8M auto_prepend_file = auto_append_file = default_mimetype = "text/html" doc_root = user_dir = enable_dl = Off file_uploads = On upload_max_filesize = 2M max_file_uploads = 20 allow_url_fopen = On allow_url_include = Off default_socket_timeout = 60 [CLI Server] cli_server.color = On [Date] date.timezone = Asia/Tokyo [filter] [iconv] [intl] [sqlite] [sqlite3] [Pcre] [Pdo] [Pdo_mysql] pdo_mysql.cache_size = 2000 pdo_mysql.default_socket= [Phar] [mail function] SMTP = localhost smtp_port = 25 sendmail_path = /usr/sbin/sendmail -t -i mail.add_x_header = On [SQL] sql.safe_mode = Off [ODBC] odbc.allow_persistent = On odbc.check_persistent = On odbc.max_persistent = -1 odbc.max_links = -1 odbc.defaultlrl = 4096 odbc.defaultbinmode = 1 [Interbase] ibase.allow_persistent = 1 ibase.max_persistent = -1 ibase.max_links = -1 ibase.timestampformat = "%Y-%m-%d %H:%M:%S" ibase.dateformat = "%Y-%m-%d" ibase.timeformat = "%H:%M:%S" [MySQL] mysql.allow_local_infile = On mysql.allow_persistent = On mysql.cache_size = 2000 mysql.max_persistent = -1 mysql.max_links = -1 mysql.default_port = mysql.default_socket = mysql.default_host = mysql.default_user = mysql.default_password = mysql.connect_timeout = 60 mysql.trace_mode = Off [MySQLi] mysqli.max_persistent = -1 mysqli.allow_persistent = On mysqli.max_links = -1 mysqli.cache_size = 2000 mysqli.default_port = 3306 mysqli.default_socket = mysqli.default_host = mysqli.default_user = mysqli.default_pw = mysqli.reconnect = Off [mysqlnd] mysqlnd.collect_statistics = On mysqlnd.collect_memory_statistics = Off [OCI8] [PostgreSQL] pgsql.allow_persistent = On pgsql.auto_reset_persistent = Off pgsql.max_persistent = -1 pgsql.max_links = -1 pgsql.ignore_notice = 0 pgsql.log_notice = 0 [Sybase-CT] sybct.allow_persistent = On sybct.max_persistent = -1 sybct.max_links = -1 sybct.min_server_severity = 10 sybct.min_client_severity = 10 [bcmath] bcmath.scale = 0 [browscap] [Session] session.save_handler = files session.use_cookies = 1 session.use_only_cookies = 1 session.name = PHPSESSID session.auto_start = 0 session.cookie_lifetime = 0 session.cookie_path = / session.cookie_domain = session.cookie_httponly = session.serialize_handler = php session.gc_probability = 1 session.gc_divisor = 1000 session.gc_maxlifetime = 1440 session.bug_compat_42 = Off session.bug_compat_warn = Off session.referer_check = session.cache_limiter = nocache session.cache_expire = 180 session.use_trans_sid = 0 session.hash_function = 0 session.hash_bits_per_character = 5 url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry" [MSSQL] mssql.allow_persistent = On mssql.max_persistent = -1 mssql.max_links = -1 mssql.min_error_severity = 10 mssql.min_message_severity = 10 mssql.compatability_mode = Off mssql.secure_connection = Off [Assertion] [mbstring] [gd] [exif] [Tidy] tidy.clean_output = Off [soap] soap.wsdl_cache_enabled=1 soap.wsdl_cache_dir="/tmp" soap.wsdl_cache_ttl=86400 soap.wsdl_cache_limit = 5 [sysvshm] [ldap] ldap.max_links = -1 [mcrypt] [dba]
httpd.conf
ほぼデフォルト。変更点に★つけました。
take@lenovo:~/work/vagrant/phpipam$ cat provisioning/httpd.conf ServerRoot "/etc/httpd" Listen 80 Include conf.modules.d/*.conf User apache Group apache ServerAdmin root@localhost <Directory /> AllowOverride none Require all denied </Directory> DocumentRoot "/var/www/html" <Directory "/var/www"> AllowOverride None Require all granted </Directory> <Directory "/var/www/html"> Options None # ★ AllowOverride All # ★ Require all granted </Directory> <IfModule dir_module> DirectoryIndex index.html </IfModule> <Files ".ht*"> Require all denied </Files> ErrorLog "logs/error_log" LogLevel warn <IfModule log_config_module> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common <IfModule logio_module> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio </IfModule> CustomLog "logs/access_log" combined </IfModule> <IfModule alias_module> ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" </IfModule> <Directory "/var/www/cgi-bin"> AllowOverride None Options None Require all granted </Directory> <IfModule mime_module> TypesConfig /etc/mime.types AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType text/html .shtml AddOutputFilter INCLUDES .shtml </IfModule> AddDefaultCharset UTF-8 <IfModule mime_magic_module> MIMEMagicFile conf/magic </IfModule> EnableSendfile on IncludeOptional conf.d/*.conf
playbook
mysqlのpassword設定部分だけ冪等性がない。あとでやる。
take@lenovo:~/work/vagrant/phpipam$ cat provisioning/site.yaml --- - hosts: all become: yes tasks: - name: install yum package yum: name={{item}} with_items: - php - php-gd - php-mbstring - php-mysql - php-pear - mariadb-server - httpd - name: copy my.cnf copy: src=./my.cnf dest=/etc/my.cnf owner=root group=root mode=0644 - name: copy php.ini copy: src=./php.ini dest=/etc/php.ini owner=root group=root mode=0644 - name: copy httpd.conf copy: src=./httpd.conf dest=/etc/httpd/conf/httpd.conf owner=root group=root mode=0644 - name: start mariadb service: name=mariadb state=started enabled=yes - name: mysql user set password # mysql_user: name=root password='PassWord' host=localhost shell: mysql -uroot -e "set password for root@localhost=password('PassWord');" ignore_errors: True - name: unpack phpipam unarchive: src=./phpipam-1.2.1.tar dest=/tmp/ - name: copy file shell: cp -r /tmp/phpipam/{.htaccess,api,app,config.dist.php,css,db,functions,index.php,install,js,misc,upgrade} /var/www/html/ - name: chown /var/www/html/ file: path=/var/www/html/ owner=apache group=apache state=directory recurse=yes - name: start httpd service: name=httpd state=started enabled=yes - name: selinux disabled selinux: state=disabled
なお上記で引用していた頃とphpipamのversionが1.2にあがったことでディレクトリ構成が変わっている。cpのところを若干変更した。