By default dotnet core limits the form element count to 1024. To submit forms with more elements, increase the limit in the ConfigureServices() method of the Startup.cs file:
services.Configure<FormOptions>(x => x.ValueCountLimit = 4096);
Knowledge Base for IT Professionals, Teachers and Astronauts
By default dotnet core limits the form element count to 1024. To submit forms with more elements, increase the limit in the ConfigureServices() method of the Startup.cs file:
services.Configure<FormOptions>(x => x.ValueCountLimit = 4096);
To specify the environment name in the .kitchen.yml file
Create a JSON environment file. Chef Zero used by Test Kitchen does not understand YAML or Ruby, we need to use JSON.
mkdir environments
{
"name": "myenv",
"description": "Test environment",
"chef_type": "environment"
}
provisioner:
name: chef_zero
client_rb:
environment: "myenv"
suites:
- name: default_envtest
environments_path: "environments"
The node.chef_environment value will be “myenv” during the Test Kitchen run.
Makefiles are great to self-document frequently executed commands in a repository. They provide easy access to the bash code by easy to remember tags.
Only tabs are allowed to indent lines. The indentation groups the commands under the rules.
On some systems Bash is not the default shell when Makefiles run. To set the shell add the line to the top of the Makefile:
SHELL := /bin/bash
Make executes every line in a new context. If you need to use pushd, popd you need to write all commands between them in one line separated with semicolons.
cluster-create:
pushd ../terraform; terraform apply; popd
Ubuntu server does not have a user interface, we will use the terminal to install the DevOps tools.
https://www.terraform.io/downloads.html
to get the version of the latest Terraform release.# Use the temp directory
cd /tmp
# Update the package repository
sudo apt-get update
# Install unzip
sudo apt-get install unzip
# Download the latest version of Terraform (substitute the x.x.x with the latest version)
wget https://releases.hashicorp.com/terraform/XX.XX.XX/terraform_XX.XX.XX_linux_amd64.zip
# Unzip the downloaded file (substitute the x.x.x with the latest version)
unzip terraform_XX.XX.XX_linux_amd64.zip
# Move the executable to a directory in the path
sudo mv terraform /usr/local/bin/
# Check the installed version
terraform --version
To install AWS CLI with the package manager.
# Update the package repository
sudo apt-get update
# Install aws cli
sudo apt-get install awscli
# Check the version
aws --version
Older versions of the AWS CLI do not contain the EKS tools, you may get the error message:
Invalid choice: ‘eks’, maybe you meant:
To update AWS CLI
# Install Pip
apt install python-pip
cd /mnt
root@P70:/mnt# ls -l
total 0
drwxrwxrwx c
drwxrwxrwx d
To enable copy/paste in the default WSL terminal
A Docker container image is one of the best formats to distribute your application. The container provides an immutable environment, so the application runs the same way on your workstation and on any server.
We will use the simple Go application we have created in the Your first Go application post. In the main application directory open the text editor and create the Dockerfile
code Dockerfile
We will create a multi-stage build script. The advantage is that the final image is very small, as it only contains the compiled Go application, not the source code, not even the Go compiler. Enter the code
FROM golang:alpine as builder
WORKDIR /src
COPY . /src
RUN go build -o myapp cmd/myapp/*
FROM alpine:3.11.3
WORKDIR /app
COPY --from=builder /src/myapp /app
ENTRYPOINT ["/app/myapp"]
Build the image
docker build -t myapp .
Check the image. myapp should be the image on the top
docker images
The output should be something like this
REPOSITORY TAG IMAGE ID CREATED SIZE
myapp latest 267e26010d88 2 minutes ago 7.66MB
docker run --rm -it myapp
If you want to run the image with Docker Compose create a compose file
code docker-compose.yml
Enter the code
version: '3'
services:
myapp:
image: myapp
docker-compose up
The output should be
Creating network “myapp_default” with the default driver
Creating myapp_myapp_1 … done Attaching to myapp_myapp_1
myapp_1 | Application config
myapp_1 | MyPackage running
myapp_myapp_1 exited with code 0
Initialize the Docker Swarm
docker swarm init
Run the container in the swarm
docker stack deploy -c docker-compose.yml myapp
The output should be
Creating network myapp_default
Creating service myapp_myapp
Check if the stack is running
docker stack ls
The output should be
NAME SERVICES ORCHESTRATOR
myapp 1 Swarm
Check if the service is running
docker service ls
Remove the stack
docker stack rm myapp
The new version of dotnet core cannot handle the HttpContext in the MVC model.
An unhandled exception has occurred while executing the request.
System.InvalidOperationException: Could not create an instance of type ‘Microsoft.AspNetCore.Http.HttpContext’. Model bound complex types must not be abstract or value types and must have a parameterless constructor. Alternatively, set the ‘HttpContext’ property to a non-null value in the ‘…’ constructor.
Remove the line from the model:
public HttpContext HttpContext { get; set; }
Remove the line from the controller:
model.HttpContext = HttpContext;
There are some configurations that can make the gameplay easier. In the Options, Gameplay section I have made the following changes:
The Cities: Skylines game does not have a usual undo function, but by pressing the F1 key we can save the current state into a “Quick Save” file before a change.
To load the state from the Quick Save file, select it in the list of the Load Game menu item
The files are saved on your hard drive at
C:\Users\YOUR_USER_NAME\AppData\Local\Colossal Order\Cities_Skylines\Saves
When a provider has been updated outside of Terraform, (for example in Terraformer) Terraform can get out of sync with that provider version. terraform init
works, but terraform plan
throws the error message:
Error: Failed to instantiate provider “aws” to obtain schema: Incompatible API version with plugin. Plugin version: 4, Client versions: [5]
To update Terraform to be able to use the new provider execute
terraform init -upgrade